如何部分提取 JSON 字符串以按名称获取特定对象

How to partially extract a JSON string to get a specific object by name

我有以下 json 字符串:

 "{"\"itemList\":[{\"id\":1,\"name\":\"Item 1 Name\"},{\"id\":2,\"name\":\"Item 2 Name\"}],"listInfo":{"info1":1,"info2":"bla"}}"

如何将特定对象提取到字符串中?例如,我想从中获取一个新字符串,如下所示:

[{\"id\":1,\"name\":\"Item 1 Name\"},{\"id\":2,\"name\":\"Item 2 Name\"}]

和另一个看起来像这样的字符串:

{"info1":1,"info2":"bla"}

第一个字符串表示 itemList 对象(包含一个数组),第二个字符串表示 listInfo 对象。

我的 objective 是将这些字符串与我计划序列化以进行单元测试的其他对象进行比较。

首先,为您的 JSON 字符串创建一个 DTO:

class BaseClass
{
    public List<ItemList> itemList = new List<ItemList>();
    public ListInfo listInfo = new ListInfo();
}

class ItemList
{
    public string id { get; set; }
    public string name { get; set; }
}

class ListInfo
{
    public string info1 { get; set; }
    public string info2 { get; set; }
}

然后:(在我修复 JSON 字符串格式之后)

using Newtonsoft.Json;
using System;
using System.Collections.Generic;

string jsonString = "{\"itemList\":[{\"id\":1,\"name\":\"Item 1 Name\"},{\"id\":2,\"name\":\"Item 2 Name\"}],\"listInfo\":{\"info1\":1,\"info2\":\"bla\"}}";

BaseClass toCompare = JsonConvert.DeserializeObject<BaseClass>(jsonString);
string itemList = JsonConvert.SerializeObject(toCompare.itemList);
string listInfo = JsonConvert.SerializeObject(toCompare.listInfo);