У меня есть следующий объект json:
[
"sd",
[
"sdg\u0026e",
"sdlc",
"sdccu",
"sdsu webportal",
"sdsu",
"sdsu blackboard",
"sdcc",
"sd card",
"sdn",
"sdro"
]
]
Получено из google с этим URL-адресом:
http://suggestqueries.google.com/complete/search?output=firefox&hl=en&q=sd
Я попытался десериализировать его так:
dynamic objson = JsonConvert.DeserializeObject(res);
Но это не полезно, потому что мне нужно это в объект класса.
А также использование типов:
public class SuggestClass
{
public string search { get; set; }
public string[] terms { get; set; }
}
var result = JsonConvert.DeserializeObject<SuggestClass>(res);
Но это всегда исключение.
Я не знаю, как это сделать, не имея полей имени.
РЕДАКТИРОВАТЬ:
Другой JSON:
["text",["textura","textos bonitos","texto argumentativo","textos","textos de amor","texto expositivo","texturas minecraft","textos de reflexion","texture pack minecraft","textos en ingles"]]
Это сложно...
Но так как это массив, вы можете создать фабричный метод для разбора SuggestClass
из заданного JArray
.
public void SomeMethod()
{
string json =
"[\"sd\",[\"sdg\u0026e\",\"sdlc\",\"sdccu\"" +
",\"sdsu webportal\",\"sdsu\",\"sdsu blackboard\","+
"\"sdcc\",\"sd card\",\"sdn\",\"sdro\"]]";
var factory = new Factory();
var suggest = factory.Create(json);
Console.WriteLine(suggest);
}
public class Factory
{
public SuggestClass Create(string json)
{
var array = JArray.Parse(json);
string search = array[0].ToString();
string[] terms = array[1].ToArray().Select(item => item.ToString()).ToArray();
return new SuggestClass {Search = search, Terms = terms};
}
}
public class SuggestClass
{
public string Search { get; set; }
public IEnumerable<string> Terms { get; set; }
public override string ToString()
{
return string.Format("Search={0},Terms=[{1}]",
Search, string.Join(",", Terms));
}
}
Будет печать на консоль:
Search=sd,Terms=[sdg&e,sdlc,sdccu,sdsu webportal,sdsu,sdsu blackboard,sdcc,sd card,sdn,sdro]
И другой JSON, который вы предоставили:
Search=sd,Terms=[sdg&e,sdlc,sdccu,sdsu webportal,sdsu,sdsu blackboard,sdcc,sd card,sdn,sdro] Search=text,Terms=[textura,textos bonitos,texto argumentativo,textos,textos de amor,texto expositivo,texturas minecraft,textos de reflexion,texture pack minecraft,textos en ingles]
Просто использовал визуализатор JSON в визуальной студии. Вот как это выглядит.
Это массив из нескольких типов. Для его анализа можно использовать следующий код. Но это еще не совсем.
var objson = JsonConvert.DeserializeObject<object[]>(res);
Поэтому я думаю, что ответ @Mikko имеет лучший подход.
SuggestClass
есть свойства, так что это означает, что у вашего JSON могут быть ключи, нет?