Member 11589429 Ответов: 2

Десериализация JSON в класс на языке C#


Если моя строка (json) содержит только следующую часть, я могу десериализовать ее с помощью библиотеки newtonsoft.

{"Код": "MXXXXX", "статус": "сбой"}

Код для десериализации:

счет открытый класс
{
открытый строковый код{ get; set; }
public string Status{ get; set; }
}
Account account = JsonConvert.DeserializeObject(в формате JSON);

Приставка.WriteLine (счет.Код);

Но если моя струна такая:

{'data': '{"Code": "MXXXXX", "Status": "failed"}'}

Я не могу десериализоваться. Здесь класс имеет только одно свойство-данные... как я могу это сделать?

Что я уже пробовал:

Code to deserialize:

public class Account
{
    public string Code{ get; set; }
    public string Status{ get; set; }
}
Account account = JsonConvert.DeserializeObject(json);

Console.WriteLine(account.Code);

lw@zi

Это не выглядит правильным JSON (не синтаксически). "данные" в вашем JSON будут десериализованы как строка из-за дополнительных кавычек вокруг нужных данных.

F-ES Sitecore

Вам нужен класс со свойством " data "типа" Account", и вы десериализуетесь в этот класс. Возможно, Вам также потребуется обновить исходную строку до

{'data': {"Code": "MXXXXX", "Status": "failed"}}

Примечание Я удалил некоторые апострофы

2 Ответов

Рейтинг:
1

Peter Leow

Проверить это: Десериализация JSON в класс на языке C#[^]

using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

namespace Rextester
{
    public class Program
    {
        public static void Main(string[] args)
        {
            string json = "{\"data\":{\"Code\": \"MXXXXX\", \"Status\": \"failed\"}}";

            var jsonObj = JsonConvert.DeserializeObject<JObject>(json).First.First;
		
            Console.WriteLine(jsonObj["Code"]);
        }

        public class Account
        {
            public string Code
            {
                get;
                set;
            }

            public string Status
            {
                get;
                set;
            }
        }
    }
}
Ссылка: Создание Экземпляра Класса [^]


Рейтинг:
0

Karthik_Mahalingam

попробовать это

static void Main(string[] args)
       {
           string json = "{'data':  {\"Code\": \"MXXXXX\", \"Status\": \"failed\"}}"; // take care of the json, it should be a valid json format
           MyAccount account = JsonConvert.DeserializeObject<MyAccount>(json);
           Console.WriteLine(account.data.Code);

       }


public class MyAccount
   {
       public Account data { get; set; }
   }
   public class Account
   {
       public string Code { get; set; }
       public string Status { get; set; }
   }