ABA


"שאלה למומחים בC# ו JSON"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #22252 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 22252
extra
חבר מתאריך 7.12.13
713 הודעות
   19:44   14.09.18   
אל הפורום  
  שאלה למומחים בC# ו JSON  
 
   יש לי קוד שמפרק סטרינג בגיסון ומציג את הפרמטרים
מצורף הקוד
https://rotter.name/User_files/nor/5b9be49049ab8a56.txt

הקוד מציג לי את הכמות במחסן ומציג כמו שצריך
הקטע שכדי לדעת את הכמות במחסן אני צריך לדעת את האינדקס של המחסן, כי ויש לי מקרים שיש כמה מחסנים ואז זה מתחיל להיות בעייתי לבדוק מה האינדקס של המחסן
כרגע אני מציג את הכמות עם השורה הזו
Response.Write(Item.Warehouses.QuantityOnHand.ToString());

השאלה אםם יש אפשרות להציג את הכמות לא לפי מיקום (אינדקס של המחסן- [Warehouses[0) אלא לפי ID של המחסן בדוגמא זה 32687 משהו כמו ["WarehouseId["32687

תודה מראש



                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  שתי מחשבות שאני רואה: Zeet3x  14.09.18 19:51 1
     השאלה היא מהירות extra 14.09.18 19:57 2
         לא חושב שלולאה זה מה שיפריע לך למהירות Zeet3x  14.09.18 22:44 3
  יש כמה דרכים לעשות כזה דבר VeNom  15.09.18 00:05 4
     תודה extra 15.09.18 06:58 5
  לא בטוח שהבנתי את הבעיה Simple  15.09.18 18:02 6
  תשתמש ב-Linq: -UC- 08.10.18 12:05 7
     תודה רבה extra 08.10.18 16:59 8
         ועל הדרך תעזר בזה, יעזור לך המוןןןןןן BarniRull 11.10.18 12:42 9

       
Zeet3x  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 14.2.12
9976 הודעות, 24 פידבק
   19:51   14.09.18   
אל הפורום  
  1. שתי מחשבות שאני רואה:  
בתגובה להודעה מספר 0
 
   1. לרוץ בלולאה ולחפש את האיבר במערך שבו יש את הID שאתה מחפש, וממנו לקחת את הכמות.
2. להעביר לתוך מבנה נתונים סטייל Hash Table כאשר הkey הייה הID והvalue יהיה שאר הפרטים (או משהו בסגנון) ואז תוכל לגשת כמו שרצית.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
extra
חבר מתאריך 7.12.13
713 הודעות
   19:57   14.09.18   
אל הפורום  
  2. השאלה היא מהירות  
בתגובה להודעה מספר 1
 
   זה אמור להיות בעמוד WEB FORM בשרת שיתופי שמקבל נתונים מסקנר
אני צריך שפעולת העיבוד תהייה מהירה מספיק עד הקלט הבא (בערך שניה) אם יש עיכוב זה בעייתי
לכן השאלה אם אין אפשרות במקום לרוץ עם לולאה ולחפש את האיבר פשוט לקרוא לו לפי השם?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Zeet3x  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 14.2.12
9976 הודעות, 24 פידבק
   22:44   14.09.18   
אל הפורום  
  3. לא חושב שלולאה זה מה שיפריע לך למהירות  
בתגובה להודעה מספר 2
 
   אין לי ניסיון במערכות בסדר גודל מטורף ולא יצא לי לעבוד עם C# בWEB אלא רק עם JS... אבל אני מאמין שלא יורגש שזה O(n)


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
VeNom  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 7.6.02
7922 הודעות, 1 פידבק
   00:05   15.09.18   
אל הפורום  
  4. יש כמה דרכים לעשות כזה דבר  
בתגובה להודעה מספר 0
 
  

If you can change the JSON's structure then warehouses should be an object and not an array.

Instead of this:

warehouses:[{id: "1122", isActive: true}, {id: "1123", isActive: true}]

Do this:

warehouses: {"1122": {isActive: true}, "1123": {isActive: false}}

And then, use Dictionary<string, Warehouse> as your type.


If you cannot change the json's structure you can:

1. Create two kinds of classes. The first one will match the JSON and the second one will match your server. You can use AutoMapper to map between the clasess since they will be almost the same.

2. Create a custom class that inherits from List<Warehouse>, expose an indexer and handle the conversion from a list to a dictionary internally.

3. Create a custom JsonConverter or apply a custom serializer - I think that it's the worst way to solve this issue but it can be handy sometimes..


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
extra
חבר מתאריך 7.12.13
713 הודעות
   06:58   15.09.18   
אל הפורום  
  5. תודה  
בתגובה להודעה מספר 4
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Simple  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 28.1.06
18765 הודעות, 22 פידבק
   18:02   15.09.18   
אל הפורום  
  6. לא בטוח שהבנתי את הבעיה  
בתגובה להודעה מספר 0
 
   אבל אם זה בעייתי הייתי שוקל לשנות את המבנה של הקוד,נשמע שיש שם איזושהי בעיה. אתה לא אמור לחפש בשלב הזה אם הבנתי אותך נכון אלא לשלוף בקלות.
אם מערכת קטנה שלא חייבת להיות סקיילבילית בטירוף האש טייבל בהחלט יפתור לך את הבעיה בזמן קצר


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
-UC- לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.8.02
21922 הודעות, 1 פידבק
   12:05   08.10.18   
אל הפורום  
  7. תשתמש ב-Linq:  
בתגובה להודעה מספר 0
 

Item.Warehouses.First(w => w.WarehouseId == 32687.0).QuantityOnHand.ToString()


@extra@


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
extra
חבר מתאריך 7.12.13
713 הודעות
   16:59   08.10.18   
אל הפורום  
  8. תודה רבה  
בתגובה להודעה מספר 7
 
   פתר לי את הבעיה
@-uc-@


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
BarniRull
חבר מתאריך 1.8.02
1420 הודעות
   12:42   11.10.18   
אל הפורום  
  9. ועל הדרך תעזר בזה, יעזור לך המוןןןןןן  
בתגובה להודעה מספר 8
 
@extra@
תשתמש ב
https://www.newtonsoft.com/json
http://json2csharp.com/
זה יעזור לך הרבה מבטיח


סליחה, רק עכשיו שמתי לב לקובץ שצירפת
אני אשאיר את מה שרשמתי שיעזור גם לאחרים במידה והם יצטרכו


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net