c# - 如何部分提取 JSON 字符串以按名称获取特定对象
问题描述
我有以下 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
对象。
我的目标是将这些字符串与我计划序列化以进行单元测试的其他对象进行比较。
解决方案
First, create a DTO for your JSON string:
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; }
}
Then: (after I fixed the JSON string format)
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);
推荐阅读
- android - API 请求通过 localhost 工作,但不能通过 Web 服务器工作
- python - 从未标记的 csv 导入时,在张量流数据集中标记列的正确方法是什么?
- sql - 使用 BETWEEN 和 WILDCARD 的解决方法
- javascript - React Native 和 Redux - 错误:操作必须是普通对象。使用自定义中间件进行异步操作
- python - 从具有不同列表长度的列表中获取加权随机值
- linux - 如何使用 Linux 中的 x86-64 汇编(AT&T 语法)中断?
- google-cloud-datastore - 为什么 Google Datastore 建议手动分配实体 ID?
- assembly - 如何将值从 rax 移动到标签?
- javascript - 无论键值位于数组中的哪个位置,如何获取键值
- python - Python 列表列表// Pyspark