将字符串解析为对象

布鲁诺·拉马略(BrunoRamalho)

我在控制器上得到了这个字符串:

"[{\"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;
    }
}

当我尝试转换字符串时,我都遇到了错误。

我的问题是,我该如何使其工作?

对于我的字符串,哪种方法最适合我的需求?

Jauch

你有试过吗?

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章