web api with json
-
@דוד ל.ט.
רק הערה, הקוד שהבאת עובד טוב? כי לדעתי המתודה json (בשורה 24) מקבלת אובייקט וממירה אותו לjson. ואילו אתה נותן לה סטרינג מה שיביא את התוצאה של אובייקט עם ערך טקסטואלי יחיד.
אכן כן, אצלי זה עובד מעולה!! כיון שהשרת המרוחק שולח אובייקט JSON, אז זה לא סטרינג רגיל, אלא סטרינג של JSON..
צדקת ממני :lol: :lol:
אכן בקוד הJS אני מבצע המרה לאובייקט JSON ולכן זה עבד לי טוב..success: function (returnJson) { var returnData = JSON.parse(returnJson);
פורסם במקור בפורום CODE613 ב16/11/2015 21:59 (+02:00)
-
ומה אמורים לכתוב בקטעים המודגשים?
אין לי שום אובייקט להמיר אני רוצה לקבל אובייקט מסוג JSON אני לא שולחת שום אובייקט אבל[u:3h2mtbn7]//המרת האובייקט לJSON
//כתיבת האוביקט לתוך השאילתא[/u:3h2mtbn7]
using (var sw = new StreamWriter(request.GetRequestStream()))
{
[u:3h2mtbn7] // sw.Write(כאן צריך להכניס את הג'יסון );[/u:3h2mtbn7]
}פורסם במקור בפורום CODE613 ב17/11/2015 10:28 (+02:00)
-
אם את רק מקבלת ולא שולחת כלום - אז את יכולה למחוק את כל זה.
כמו כן, עדיף לעשות כמו שדוד הציע, ולכן תשני את הפונקציה שתחזיר ActionResult ולא JsonResult
ובסוף במקום לכתוב:return Json(result, JsonRequestBehavior.AllowGet);
עדיף לעשות:
return Content(result , "application/json");
כמו כן, אם את כן צריכה לשלוח כל מיני פרמטרים לשרת שם, אז אם את שולחת POST אז תעשי איך שכתבתי למעלה.
אך אם זה GET, אז פשוט מוסיפים את הנתונים מיד בסיום הURL, לאחר הסימן ?.
בהצלחה!פורסם במקור בפורום CODE613 ב17/11/2015 10:36 (+02:00)
-
כן ככה בדיוק עשיתי ובאמת קיבלת את אובייקט הJSON המבוקש
הבעיה שלי עכשיו איך מתעסקים עם הדבר הזה בC#
אין לי מושג איך ניגשים להיררכיה הזו
יש למישהו דוגמא לריצה או גישה לתוכן של JSON בC#?
כי אני רוצה למלא איזה VM ואותו לשלוח לקליינטפורסם במקור בפורום CODE613 ב17/11/2015 10:50 (+02:00)
-
בC# מתעסקים עם json עם המחלקה json.net. היא זמינה במנהל החבילות של nuget (קליק ימני על הפרוייקט/סולושן > Manage Nuget Package...).
כעת השאלה מה את רוצה לעשות וזה בעצם מה שכדאי תמיד לפרט במקסימום בשאלה.
למשל אם: את יודעת מראש (בעת כתיבת הקוד) את המבנה של הjson?
במקרה כזה הכי נוח זה ליצור מחלקת C# מקבילה למבנה הJSON. ואז סריאליזציה: http://www.newtonsoft.com/json/help/html/DeserializeObject.htmאבל אם המבנה דינמי כל פעם משהו אחר (או שהוא קבוע רק שאינך יודעת אותו מראש) אז מוכרחים לעבוד ע"י ניתוח התוכן. הנה מצב של עיבוד json לא ספציפי:
http://www.newtonsoft.com/json/help/html/ReadJsonWithJsonTextReader.htmפורסם במקור בפורום CODE613 ב17/11/2015 14:53 (+02:00)
-
מצאתי איזשהי דרך לעבוד עם הJSON כי זה אובייקט ממש מורכב ולא שייך ליצור לו אובייקט מתאים
using (var sr = new StreamReader(response.GetResponseStream())) { var result = sr.ReadToEnd(); var obj = JObject.Parse(result); for (int i = 0; i < 10; i++) { vm.Images.Add(new InsetegramModels() { ImagePath = obj.GetValue("data")[i]["images"]["standard_resolution"]["url"].ToString(), Caption = obj.GetValue("data")[i]["caption"]["text"].ToString(), CreatedDate = GeneralUtil.UnixTimeStampToDateTime(Convert.ToDouble(obj.GetValue("data")[0]["created_time"].ToString())), Likes = obj.GetValue("data")[i]["likes"]["count"].ToString(), }); } }
האם זה נחשב דרך קצת פרימיטיבית ולא חכמה?
פורסם במקור בפורום CODE613 ב18/11/2015 09:52 (+02:00)
-
כעיקרון כשעובדים עם פרוייקט API לא צריך לדעת כמעט כלום על ג'ייסון אם עובדים עם התפיסה של דוט נט, הוא יודע לקחת אובייקטים ולהפוך אותם לג'ייסון לבד, וכן לקבל ג'ייסון ולהמיר אותו לאובייקט כבר בפרמטר של הקונטרולר, זה די מיותר להתחרבש עם מחלקות של ג'ייסון.
פורסם במקור בפורום CODE613 ב18/11/2015 23:40 (+02:00)