我有以下json对象:
[
"sd",
[
"sdg\u0026e",
"sdlc",
"sdccu",
"sdsu webportal",
"sdsu",
"sdsu blackboard",
"sdcc",
"sd card",
"sdn",
"sdro"
]
]
从Google建议获得此网址:
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"]]
答案 0 :(得分:1)
那很棘手......
但由于它是一个数组,您可以创建一个工厂方法来解析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]
答案 1 :(得分:0)
刚刚在visual studio中使用了JSON可视化工具。这就是它的样子。
这是一个包含多种类型的数组。以下代码可用于解析它。但它还不完美。
var objson = JsonConvert.DeserializeObject<object[]>(res);
所以我认为@Mikko的答案有更好的方法..