У меня есть объект:
class Node
{
public Node(string text)
{
Text = new List<string> { text };
}
public List<string> Text { get; set; }
}
Когда я пытаюсь передать экземпляр этого объекта в JSON, используя Json.NET, вот так:
var root = new Node("");
var json = JsonConvert.SerializeObject(root);
root = JsonConvert.DeserializeObject<Node>(json);
Я получаю следующую ошибку:
Unhandled Exception: Newtonsoft.Json.JsonReaderException: Unexpected character encountered while parsing value: [. Path 'Text', line 2, position 11.
at Newtonsoft.Json.JsonTextReader.ReadStringValue(ReadType readType)
at Newtonsoft.Json.JsonTextReader.ReadAsString()
at Newtonsoft.Json.JsonReader.ReadForType(JsonContract contract, Boolean hasConverter)
По какой-то причине он просто не может обработать это поле List<string> Text
, и я не могу понять это.
Я буквально пытаюсь десериализовать строку, которую она ПРОСТО сериализует. Я мог бы попробовать написать собственный конвертер, но не похоже, что здесь это необходимо.
Возможно, есть атрибут, который я могу использовать, чтобы помочь ему в этом?
Редактировать:
Создал новый проект (консольное приложение .NET Framework) всего с одним файлом Program.cs
со следующим кодом:
using Newtonsoft.Json; // Version: 12.0.3
using System.Collections.Generic;
namespace ConsoleApp1
{
class Node
{
public Node(string text)
{
Text = new List<string> { text };
}
public List<string> Text { get; set; }
}
class Program
{
static void Main()
{
var root = new Node("");
var json = JsonConvert.SerializeObject(root);
root = JsonConvert.DeserializeObject<Node>(json);
}
}
}
Я все еще получаю ту же ошибку.