【问题标题】:Extract part of the JSON content (property) and convert to c# object?提取部分 JSON 内容(属性)并转换为 c# 对象?
【发布时间】:2020-09-10 21:08:59
【问题描述】:

如何获取部分 json 内容并转换为 c# 对象。 API 返回低于 JSON 内容。从中我需要获取“ContentItems”部分并转换为 C# 对象。我已经创建了“ContentItems”类。

我正在使用Newtonsoft.Json。很难理解它的一部分。

{
    "SubmissionId": 69,
    "SubmissionKey": "a1c78c25-b885-4ec0-8032-040fca6b447e",
    "CreatedUserId": 4,
    "ResourceType": "Article",
    "Files": [
       {
        "SubmissionFileId": 149,
        "FileName": "ARMA-81-0475.xml",
         "ContentItems": [
                {
                "ContentItemId": 132,
                "ContentKey": "8f8b2f74-ba29-4b7d-a44f-8d119dc2aab7",
                "SubmissionFile": null,                    
                }
           ]
        }
    ]
}

ContentItems.cs

public class ContentItems
{
    public int ContentItemId { get; set; }
    public string ContentKey { get; set; }
    public string SubmissionFile { get; set; }
}

【问题讨论】:

标签: c# asp.net json json.net


【解决方案1】:

试试这个:

dynamic obj = JsonConvert.DeserializeObject(jsonContent);
var item = obj.Files[0].ContentItems[0].ToObject<ContentItems>();

【讨论】:

    【解决方案2】:

    以下是如何使用 JSONPath 从 JSON 中提取 ContentItems

    var recs = JObject.Parse("*** JSON Text ***").SelectTokens("$..Files[*].ContentItems[*]")
        .Select(j => JsonConvert.DeserializeObject<ContentItems>(j.ToString()));
    
    foreach (var rec in recs)
        Console.WriteLine(rec.ContentItemId);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-27
      • 2020-02-02
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      • 2020-04-14
      相关资源
      最近更新 更多