【问题标题】:Read json value using json path using C#使用 C# 使用 json 路径读取 json 值
【发布时间】:2020-08-15 14:56:48
【问题描述】:

我有一个 json 字符串:

{{
  "Data": "{\"userName\":\"Iron Man\",\"password\":\"MyPass123\"}",
  "Verb": "post",
  "Url": "/Account/v1/User"
}}

我需要使用 jsonpath 读取 userName 的值。 我能够读取 Data 的值,但不能读取 userName 的值。

尝试1: $.Data.userName

尝试2: Data.userName

尝试3: $..userName

但没有运气。

【问题讨论】:

  • 您的数据真的是这样吗?
  • 如果你的数据确实是这样,那么“数据”属性是一个字符串,而不是一个对象
  • jsonlint.com 说你的json无效
  • 您的 json-tring 中有一个 json-string nested。解决这个问题的正确方法是修复代码生成你的json-string。快速的方法是反序列化该嵌套字符串。加:帕维尔说的。
  • 添加了 json 参考截图

标签: c# json json.net


【解决方案1】:

您的 JSON 中的 Data 属性包含另一个序列化的 JSON 字符串。因此,为了访问userName,您需要解析两次,一次用于外部 JSON,一次用于Data JSON。您将无法使用单个 JsonPath 表达式从外部 JSON 获取 userName

var outerJObject = JObject.Parse(json);
var dataJson = (string)outerJObject["Data"];
var dataJObject = JObject.Parse(dataJson);
var userName = (string)dataJObject["userName"];     

演示小提琴:https://dotnetfiddle.net/PF5wFJ

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-19
    相关资源
    最近更新 更多