Снимок экрана с ошибкой у меня есть файл json, который содержит некоторые данные, и я хочу его проанализировать но каждый раз, когда я хочу десериализовать объект, он выдает мне эту ошибку «Невозможно найти конструктор. Класс должен иметь конструктор по умолчанию, один конструктор с аргументами или конструктор, помеченный конструктором json. Я не знаю, что делать, потому что я сделал не работать с json, пока я впервые работаю с json. вот мой json:
{
"Addition":
{
"Easy": [
"New York Bulls",
"Los Angeles Kings",
"Golden State Warriros",
"Huston Rocket"
],
"Medium":[
"New York Bulls",
"Los Angeles Kings",
"Golden State Warriros",
"Huston Rocket"
],
"Difficult": [
"New York Bulls",
"Los Angeles Kings",
"Golden State Warriros",
"Huston Rocket"
]
}
}
вот мой модельный класс
public class Addition
{
public List<string> Easy { get; set; }
public List<string> Medium { get; set; }
public List<string> Difficult { get; set; }
public Addition() { }
}
вот моя функция, в которой я Deserialize объект
private void ReadJson()
{
var assembly = typeof(WordProblemsScreen).GetTypeInfo().Assembly;
Stream stream =
assembly.GetManifestResourceStream("MathRandomizer.demo.json");
using (var reader = new System.IO.StreamReader(stream))
{
string json = reader.ReadToEnd();
JObject jObject = JObject.Parse(json);
JToken jUser = jObject["Addition"];
var addition = JsonConvert.DeserializeObject<Addition>(json);
}
}
JsonConvert
будет использовать его, если не указан другой, и установит свойства соответствующим образом. - person HimBromBeere   schedule 12.04.2019Addition
класс. Нажмите в середине<Addition>
, а затем нажмите[F12]
. Посмотрите, куда это вас приведет. - person Henk Holterman   schedule 12.04.2019var addition = JsonConvert.DeserializeObject<Addition>(json);
‹-- вы пытаетесь десериализовать свой JSON в неправильный объект. Вам нужен корневой объект. - person Llama   schedule 12.04.2019{
в вашем JSON — это объект, в который вам нужно десериализоваться. Корневой объект вашего JSON содержит ваш классAdditions
- вы, кажется, знаете об этом из строкиJToken jUser = jObject["Addition"];
. - person Llama   schedule 12.04.2019RootObject
вложен вAddition
(по какой-то причине?) . Как я уже говорил: единственный логический вывод сейчас состоит в том, что ваш JSON отличается. Не зная, что на самом деле представляет собой ваш JSON, мы не сможем вам помочь. Я напечатал JSON в связанной скрипке - отсутствие новых строк не имеет значения. Сравните его с вашим фактическим JSON, также выполнивConsole.WriteLine(json)
в своем собственном коде. - person Llama   schedule 12.04.2019