À l'aide de JObject et JProperty avec JSON.Net 4.0
Je suis en train de désérialiser JSON dans ce format:
{
"data": [
{
"installed": 1,
"user_likes": 1,
"user_education_history": 1,
"friends_education_history": 1,
"bookmarked": 1
}
]
}
à une simple chaîne de caractères tableau comme ceci:
{
"installed",
"user_likes",
"user_education_history",
"friends_education_history",
"bookmarked"
}
à l'aide de JSON.NET 4.0
J'ai eu à le faire fonctionner à l'aide de la "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;
}
}
mais ce vraiment semble exagéré, surtout si je veux en créer un pour de nombreuses réponses json.
J'ai essayé d'utiliser JObject
mais il ne semble pas comme je suis en train de faire:
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);
}
Est-il une meilleure façon de le faire?
OriginalL'auteur Greg | 2012-05-10
Vous devez vous connecter pour publier un commentaire.
Il existe de nombreuses façons que vous pouvez faire, et ce que vous avez est très bien. Quelques autres solutions sont illustrées ci-dessous:
Utilisation
SelectToken
pour aller vers le premier élément du tableau avec un seul appelLe cas échéant, je pense que sera probablement négligeable. Mais comme toujours, essayez dans votre scénario, de le mesurer, et de décider par vous-même.
OriginalL'auteur carlosfigueira