我在控制器上得到了这个字符串:
"[{\"id\":12},{\"id\":2,\"children\":[{\"id\":3},{\"id\":4}]}]"
我想对此进行解析,并在其他foreach中创建一个foreach来获取父母和子女。
我一直在尝试:
var object = JsonConvert.DeserializeObject<MenuJson>(json);
MenuJson在哪里:
public class MenuJson
{
[JsonProperty("id")]
public string id { get; set; }
[JsonProperty("children")]
public List<string> children { get; set; }
}
我得到了这个错误:
无法将当前JSON数组(例如[1,2,3])反序列化为类型'AIO.Controllers.AdminMenuController + MenuJson',因为该类型需要JSON对象(例如{“ name”:“ value”})才能正确反序列化。
要解决此错误,可以将JSON更改为JSON对象(例如{“ name”:“ value”}),也可以将反序列化类型更改为数组,或者将实现集合接口的类型(例如ICollection,IList)更改为List,例如List从JSON数组反序列化。还可以将JsonArrayAttribute添加到类型中,以强制其从JSON数组反序列化。
路径'',第1行,位置1。
我尝试了其他方法:
var objects = JsonConvert.DeserializeObject<JObject>(json);
foreach (var property in objects)
{
var id = property.Value;
foreach (var innerProperty in ((JObject)property.Value).Properties())
{
var child = property.Value;
}
}
当我尝试转换字符串时,我都遇到了错误。
我的问题是,我该如何使其工作?
对于我的字符串,哪种方法最适合我的需求?
你有试过吗?
public class MenuJson
{
[JsonProperty("id")]
public string id { get; set; }
[JsonProperty("children")]
public List<MenuJson> children { get; set; }
}
var list = JsonConvert.DeserializeObject<List<MenuJson>>(json);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句