Я пытаюсь десериализации JSON в этом формате:Использование JObject и JProperty с JSON.Net 4,0
{
"data": [
{
"installed": 1,
"user_likes": 1,
"user_education_history": 1,
"friends_education_history": 1,
"bookmarked": 1
}
]
}
в простой массив строк, как это:
{
"installed",
"user_likes",
"user_education_history",
"friends_education_history",
"bookmarked"
}
с использованием JSON.NET 4.0
Я получил его для работы с использованием «CustomCreationConverter»
public class ListConverter : CustomCreationConverter<List<string>>
{
public override List<string> Create(Type objectType)
{
return new List<string>();
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
var lst = new List<string>();
//don't care about the inital 'data' element
reader.Read();
while (reader.Read())
{
if (reader.TokenType == JsonToken.PropertyName)
{
lst.Add(reader.Value.ToString());
}
}
return lst;
}
}
но это действительно похоже на излишний, особенно если я хочу создать его для разных ответов json.
Я попытался с помощью JObject
, но это не кажется, что я делаю это правильно:
List<string> lst = new List<string>();
JObject j = JObject.Parse(json_string);
foreach (JProperty p in j.SelectToken("data").Children().Children())
{
lst.Add(p.Name);
}
Есть ли лучший способ сделать это?
Есть ли разница между этими двумя способами в производительности или чем-либо еще? – Clox
Если есть, я думаю, что, вероятно, будет незначительным. Но, как всегда, попробуйте в своем сценарии, измерите его и решите сами. – carlosfigueira