Как частично извлечь строку JSON, чтобы получить указанный c объект по имени - PullRequest
0 голосов
/ 24 февраля 2020

У меня есть следующая json строка:

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

Как я могу извлечь указанные c объекты в строку? Например, я хочу получить из него новую строку, которая выглядит следующим образом:

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

, а другая строка выглядит следующим образом:

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

Первая строка представляет объект itemList (который содержит массив), а вторая строка представляет объект listInfo.

Моя цель - сравнить эти строки с другими другими объектами, которые Я планирую сериализовать для модульного тестирования.

1 Ответ

1 голос
/ 24 февраля 2020

Сначала создайте DTO для вашей JSON строки:

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...