Как я могу разобрать JSON с C #?

использовать ISNULL (поле, 0), это будет вставлять ноль, если поле NULL

402
задан Stephen Kennedy 13 March 2018 в 18:00
поделиться

1 ответ

Система. Текст. Ядро Json

.net 3.0 идет System.Text.Json встроенный, что означает, что можно теперь десериализовать/сериализировать JSON без [1 123] пользование сторонней библиотекой.

Для сериализации класса (классов) к строке JSON:

var json = JsonSerializer.Serialize(order);

Для десериализации JSON в класс со строгим контролем типов:

var order = JsonSerializer.Deserialize<Order>(json);

Поэтому, если у Вас есть класс как ниже:

public class Order
{
    public int Id { get; set; }
    public string OrderNumber { get; set; }
    public decimal Balance { get; set; }
    public DateTime Opened { get; set; }
}

var json = JsonSerializer.Serialize(order);
// creates JSON ==>
{
    "id": 123456,
    "orderNumber": "ABC-123-456",
    "balance": 9876.54,
    "opened": "2019-10-21T23:47:16.85",
};

var order = JsonSerializer.Deserialize<Order>(json);
// ==> creates the above class
<час>

Одна вещь отметить состоит в том, что System.Text.Json не делает автоматически дескриптор camelCase свойства JSON при использовании собственного кода (однако, он делает при использовании запросов MVC/WebAPI и образцового редактора связей).

Поэтому, если у Вас есть JSON как ниже и Order как вышеупомянутый тогда, он не десериализует в Ваш класс.

var json = @"{
    ""id"": 123456,
    ""orderNumber"": ""ABC-123-456"",
    ""balance"": 9876.54,
    ""opened"": ""2019-10-21T23:47:16.8513874+01:00"",
}";

Для разрешения этого необходимо передать JsonSerializerOptions в качестве параметра (к сожалению, не возможно настроить это широкое приложение).

JsonSerializerOptions options = new JsonSerializerOptions
{        
    PropertyNamingPolicy = JsonNamingPolicy.CamelCase,  // set camelCase       
    WriteIndented = true   // write pretty json
};

// serialize using options
var json = JsonSerializer.Serialize(order, options);
// deserialize using options
var order = JsonSerializer.Deserialize<Order>(json, options);

System.Text.Json также доступно для.Net Framework и.Net Standard, поскольку Ню - получает пакет Система. Текст. Json

0
ответ дан 22 November 2019 в 23:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: