Таким образом, я больше не могу использовать myObject, так как это фиксированный класс. Так как же я могу десериализовать такой объект?
Чтобы избавиться от этой проблемы Newtonsoft.Json
имеет очень хорошую функцию, которую мы можем использовать
Если вы не знаете, какой json object
или array
взят из вашего ресурса. означает, что вы не можете определить его соответствующий объект c #, тогда newtonsoft имеет JObject
и JArray
может справиться с этой проблемой, как
1) Предположим, что ваша строка json object
как
var json = @"{ 'Name':'a','Phone':'a','Ic':'a'}";
Тогда вы можете использовать JObject
здесь
JObject jObject = JsonConvert.DeserializeObject<JObject>(json);
2) Предположим, что ваша строка json array
как
var json1 = @"[{ 'Name':'a','Phone':'a','Ic':'a'},{ 'Name':'b','Phone':'b','Ic':'b'}]";
Тогда вы можете использовать JArray
здесь
JArray jArray = JsonConvert.DeserializeObject<JArray>(json1);
После успешного получения JArray
из строки json. Вы также можете запросить свой десериализованный объект, чтобы получить от него конкретный object
, например
JObject jObject1 = jArray.Children<JObject>().FirstOrDefault();
JObject jObject2 = jArray.Children<JObject>().FirstOrDefault(x => x["Name"] != null && x["Name"].ToString() == "a");
int count = jArray.Children<JObject>().Count();
Если вы хотите получить определенную пару key:value
от вашего json, вы можете получить ее по следующему коду
JProperty jProperty = jObject1.Properties().Where(x => x.Name == "Name").FirstOrDefault();
var value = (string)jProperty.Value;
Попробуйте один раз, может это вам поможет.