在C#中反序列化JSON对象

问题描述 投票:1回答:1

我想从PubMed获得稿件摘要。每个摘要的内容都采用JSON格式,格式如下。 “29498802”是一个唯一的ID,每个手稿都有所不同。

{
   "header":{
      "type":"esummary",
      "version":"0.3"
   },
   "result":{
      "uids":[
         "29498802"
      ],
      "29498802":{ 
       "uid":"29498802",
           "pubdate":"2018 Mar 2",
           "epubdate":"2018 Mar 2",
        ... 
    }
   }
}

我在C#中使用Newtonsoft.Json将JSON反序列化为一个类:

var summary = JsonConvert.DeserializeObject<Summary>(stringResult);

我的Summary类如下:

public class Summary
{
    [JsonProperty("header")]
    public Header header { get; set; }

    [JsonProperty("result")]
    public Result result { get; set; }

}

public class Result
{
    [JsonProperty("uids")]
    public List<string> uids { get; set; }

    public Dictionary<string, PubMedId> content { get; set; }
}

public class PubMedId
{
    [JsonProperty("uid")]
    public string uid { get; set; }
    ...
}

我能够提取“标题(类型和版本)”,“uids”,但“内容”始终为空。有什么建议?

c# json
1个回答
2
投票
        var summary = JsonConvert.DeserializeObject<Summary>(text);
        var resultjO = JObject.Parse(text).Value<JObject>("result");

        var pubdAsJObject = resultjO.Value<JObject>(summary.result.uids[0]);
        var pubMed = JsonConvert.DeserializeObject<PubMedId>(pubdAsJObject.ToString());
© www.soinside.com 2019 - 2024. All rights reserved.