【问题标题】:Deserialize JSON with json.NET into C# dynamic使用 json.NET 将 JSON 反序列化为 C# 动态
【发布时间】:2016-02-07 02:20:44
【问题描述】:

我有以下问题:我有一个看起来像这样的 json 文件

{
    "Path": {
        "FirstPath": "/1/2/text()"
    }
}

如果我像这样用 Newtonsoft 解析这个 JSON 文件

 dynamic dyn = JObject.Parse(json);

或者这个

dynamic dyn = JsonConvert.DeserializeObject(json);

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

dyn.Path.FirstPath.Value

我怎样才能摆脱价值的东西?我在 JSON 中的所有对象最终都是一个字符串。如果没有必要,我不想总是在末尾写“.Value”。

【问题讨论】:

    标签: c# json json.net


    【解决方案1】:

    我使用 Newtonsoft 8.0.2 对此进行了测试,效果很好。

            dynamic dyn = JObject.Parse(json);
    
            string value = dyn.Path.FirstPath;
    

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

    【讨论】:

    • 是的,但是如果您仔细观察,您会发现“value”不是来自“Newtonsoft.Json.Linq.JValue”类型的字符串。如果您获取“值”并将其传递给需要字符串的方法,您将获得异常。仅当您编写“value.Value”时才有效。
    • 然后将“var”替换为“string”。我已经更新了我的答案。
    猜你喜欢
    • 1970-01-01
    • 2015-11-22
    • 1970-01-01
    • 2016-04-03
    • 2011-02-02
    • 2011-05-30
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    相关资源
    最近更新 更多