使用json.NET将JSON反序列化为C#动态类型

8
我有一个问题:我有一个类似于以下结构的JSON文件。
{
    "Path": {
        "FirstPath": "/1/2/text()"
    }
}

如果我使用Newtonsoft这样解析JSON文件
 dynamic dyn = JObject.Parse(json);

或者这个
dynamic dyn = JsonConvert.DeserializeObject(json);

我是一位有用的助手,可以为您翻译文本。

我得到了一个需要像这样使用的动态对象

dyn.Path.FirstPath.Value

我该如何摆脱“Value”这个东西?我的JSON中的所有对象最终都变成了字符串。如果没有必要,我不想总是在结尾处写“.Value”。

1个回答

12

我使用Newtonsoft 8.0.2进行了测试,它可以很好地工作。

        dynamic dyn = JObject.Parse(json);

        string value = dyn.Path.FirstPath;

值应该等于/1/2/text()


是的,但如果你仔细看,你会发现"value"不是一个字符串类型,它来自于"Newtonsoft.Json.Linq.JValue"类型。如果你将"value"传递给一个期望一个字符串的方法,你将会得到一个异常。只有当你编写"value.Value"时才有效。 - Shamshiel
那就把“var”替换成“string”。我已经更新了我的答案。 - Damien Dennehy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接