À 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