Newtonsoft.Json.JsonReaderException: 'Unexpected character encountered while parsing value: {. Path 'Header.CoverPage.Title', line 12, position 16.'
Newtonsoft.Json
, вот упрощённый пример кода для десериализации:string readJsonObject = string.Empty;
using (StreamReader sr = new StreamReader(path))
{
readJsonObject += sr.ReadToEnd();
}
MyType JsonConvert.DeserializeObject<MyType>(readJsonObject);
public
конструктор и все свойства должны быть set
(Именно public set
, init
так же не подходит)System.Reflection
, т.е., они могут восстановить только те поля/свойства, который доступны публично
BinarySerialization
так же не подходитweb api + react
основной единицей транспортировки данных были модели, так называемые DTO
(Data Transfer Object), которые сами по себе имеют только публичные свойства и стандартный публичный конструктор без параметров и эти объекты отлично работают для отправки информации через http
{
"Header": {
"CoverPage": {
"Title": { "Content": "data" }
}
}
}
// <auto-generated />
//
// To parse this JSON data, add NuGet 'Newtonsoft.Json' then do:
//
// using QuickType;
//
// var data = Data.FromJson(jsonString);
namespace QuickType
{
using System;
using System.Collections.Generic;
using System.Globalization;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
public partial class Data
{
[JsonProperty("Header")]
public Header Header { get; set; }
}
public partial class Header
{
[JsonProperty("CoverPage")]
public CoverPage CoverPage { get; set; }
}
public partial class CoverPage
{
[JsonProperty("Title")]
public Title Title { get; set; }
}
public partial class Title
{
[JsonProperty("Content")]
public string Content { get; set; }
}
public partial class Data
{
public static Data FromJson(string json) => JsonConvert.DeserializeObject<Data>(json, QuickType.Converter.Settings);
}
public static class Serialize
{
public static string ToJson(this Data self) => JsonConvert.SerializeObject(self, QuickType.Converter.Settings);
}
internal static class Converter
{
public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
{
MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
DateParseHandling = DateParseHandling.None,
Converters =
{
new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }
},
};
}
}