Относительно новичок здесь с небольшим вопросом. Я извлекал строку json, которая выглядит следующим образом (в данном случае это измененный результат из Facebook oauth2.
{ "ID": "555555555555555", "имя": "Обезьяна
Человек " "last_name": "Человек", "first_name": "Обезьяна", "электронная почта": "Тест \ u0040someaccount.com", "место": { "ID": "555555555555555", "имя":" Джунгли ,
к северу
Каролина "}," пол ":" мужчина " "работа": [{ "работодатель": { "ID": "555555555555555", "имя":" Большой
Босс заставляет меня работать "}:" projects ": {" current ":" делать вещи ",
«Предыдущий»: "другое
вещи "}," location ": {" id ":" 555555555555555 "," name ":" Jungle, North "
Каролина "}," позиция ": {" ID ":" 555555555555555" , "имя": "IT
обезьяна "}," start_date ":" 2010-09 "}]," картинка ":" http://profile.ak.fbcdn.net/static-ak/rsrc.php/v1/yo/r/5555555-555.gif"}
Ну, я могу извлечь все в словарь, используя следующий код
JavaScriptSerializer ser = new JavaScriptSerializer();
Dictionary<string, object> dict = ser.Deserialize<Dictionary<string,object>>(json);
Затем я извлекаю данные из словаря следующим образом и сохраняю их в объекте с именем contact, который в значительной степени представляет собой просто набор строк.
if (d.ContainsKey("email"))
{
c.email = d["email"].ToString();
}
else
c.email = "";
Я сделал это таким образом, так как не был гарантирован, все информационные поля будут там.
Если в значении указан объект, например, с адресом, я использую модифицированный код (спасибо парню, который показал мне, как это сделать), как показано ниже.
c.location = (d["location"] as Dictionary<string, object>)["name"].ToString();
Теперь наступит трудная часть, на которой я застрял.
Я пытаюсь извлечь имя работодателя «Большой босс заставляет меня работать» из следующей части строки ...
"работа": [{"работодатель": {"id": "555555555555555", "name": "Большой босс делает меня
работа "}:" проекты ": {" текущий ":" делать вещи "," предыдущий ":" другой
вещи "}," location ": {" id ":" 555555555555555 "," name ":" Jungle, North "
Каролина "}," позиция ": {" ID ":" 555555555555555" , "имя": "IT
обезьяна "}," start_date ":" 2010-09" }]
Он хранит данные в массиве внутри других объектов, и я понятия не имею, как получить информацию для ее извлечения или даже как извлечь информацию, подобную этой, из live oauth2 ...
"address": {"personal": {"street": null, "street_2": null, "city":
"Джунгли", "штат": "NC", "postal_code": "28677", "region": "United
Штаты "}," business ": {" street ":" Tree Street "," street_2 ": null,
"city": "Jungle", "state": "NC", "postal_code": "28677", "region":
"Соединенные Штаты"}}
Как вы можете видеть, это углубляется на три уровня, поэтому my (d ["location"] как Dictionary) ["name"]. ToString (); здесь довольно бесполезно Как бы вы узнали, как получить название улицы?
Надеюсь, мои вопросы не слишком расплывчаты или случайны. Мне просто нужен совет по правильному извлечению данных из объектов словаря. Способы, которые я придумываю, включают редактирование строки json, и это вызывает множество проблем, поскольку я просто недостаточно хорошо понимаю объект словаря, чтобы понять это самостоятельно
Спасибо