【问题标题】:Parsing ony few fields of JSON只解析 JSON 的几个字段
【发布时间】:2016-11-11 21:40:12
【问题描述】:

我是 JSON 新手,希望您能帮助我。 我这样做了:

var myfields = Newtonsoft.Json.JsonConvert.DeserializeObject<Rootobject>(s);

这是 JSON 的链接:link 如您所见,我有很多字段,每个字段都显示了几次。 现在我只能访问第一个。 例如:

 final = myfields.results.First().warnings[0];

此字符串包含第一个警告字段。 我尝试输入而不是 0 - 1,但出现错误。

我怎样才能得到其他人?

谢谢

【问题讨论】:

标签: c# json visual-studio api parsing


【解决方案1】:

仅使用您需要的字段创建类,然后反序列化 json

public class YourTwoField
{
    [JsonProperty("field1")]
    public string FieldOne { get; set; }

    [JsonProperty("field2")]
    public string FieldTwo { get; set; }
}

var myfields = Newtonsoft.Json.JsonConvert.DeserializeObject<YourTwoField>(yourJsonString);
// use values
myfields.FieldOne

关于 cmets 的更新:

你的问题是你一开始没有提供足够的信息。 您需要的字段位于 JSON 层次结构的底层。

  1. 将您的 json 结果复制到剪贴板
  2. 在 Visual Studio 中打开空文件
  3. 然后Edit -> Paste Special -> 将 JSON 粘贴为类

现在将所有 JSON 模式作为我认为会生成一些 RootObject 的类,然后

var root = Newtonsoft.Json.JsonConvert.DeserializeObject<RootObject>(yourJsonString);

//Then your can brows to the values you want
root.results.First().openfda.generic_name
root.results.First().openfda.brand_name

或者循环所有结果

foreach(var result in root.results)
{
    result.openfda.generic_name;
    result.openfda.brand_name;
}

【讨论】:

  • 大家好,谢谢大家。这是例如 api 结果:link,我在反序列化 JSON 时遇到问题。
  • 什么样的问题?并将您的 api 结果添加到问题中
  • 嗨,我之前在评论中添加了一个链接。我在解析所选字段时遇到问题,现在我看到了您的提示,我会尝试使用它。
  • 嗨,这就是我所做的,link,这是link 类,但它仍然不起作用,我收到错误:'Newtonsoft.Json.JsonReaderException 类型的未处理异常' 发生在 Newtonsoft.Json.dll 中。我希望你能帮助我
  • @RonF,将所有这些信息放在问题中 - 这样您将获得更多帮助。并提供有关您获得的异常的更多信息 - 也许是内部异常消息
猜你喜欢
  • 2021-07-26
  • 2021-12-29
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 2015-12-04
  • 2016-11-04
相关资源
最近更新 更多