c# - 如何访问 json.net 中的子值

标签 c# json.net

我正在尝试解析 json 以访问子值。以下是示例 json,

jsondata = {
  "sample_data": "{"o2:{"testname":"o2","department":"chemistry","normalvalue":"l","testmethod":"j","specimen":"g","referelprice":"y","normalprice":"i","discountprice":"o"}}"
}

下面是我的代码

var _json = JObject.Parse(jsondata.ToString());
Console.WriteLine(_json["sample_data"]);

这段代码给出了输出

{"o2":{"testname":"o2","department":"chemistry","normalvalue":"l","testmethod":"j","specimen":"g","referelprice":"y","normalprice":"i","discountprice":"o"}}

现在,如果我尝试使用

获取子节点“o2”

Console.WriteLine(_json["sample_data"]["o2"]);

我收到以下错误信息

cannot access child value on newtonsoft.json.linq.jvalue

请帮助我了解如何获取子值。我想要这样的输出

{"testname":"o2","department":"chemistry","normalvalue":"l","testmethod":"j","specimen":"g","referelprice":"y","normalprice":"i","discountprice":"o"}

我怎样才能做到这一点。请帮忙。

最佳答案

在您的示例 jsondata 中,再次存储 sample_data 的值是字符串。

试试这个

var _json = JObject.Parse(jsondata.ToString());
var sampledataJson = JObject.Parse(_json["sample_data"].ToString());
Console.WriteLine(sampledataJson["o2"]);

关于c# - 如何访问 json.net 中的子值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40013857/

相关文章:

c# - 为什么 Intellisense 看到命名空间,而编译器却看不到?

c# - 在字符串的二进制搜索中应用索引

c# - 通过连接包含的元素合并两个 Json.NET 数组

c# - 反序列化保留本地时间的日期

c# - 有没有办法只将特定的 C# 属性标记为可序列化?

c# - 设置 'Auto'时获取WPF控件高度

c# - 方法重载

c# - ASP.NET MVC Debug模式设置

c# - 仅将 int 的 json 中的 "null"替换为 "0"还是使用 Nullable<int>?

c# - 使用 JSON.NET 进行部分反序列化,保留一些原始字段