У меня есть JSON, который обладает множеством свойств, большинство из которых являются простыми типами данных. Однако у меня есть одно свойство в JSON, которое, когда я десериализую его на класс C#, просто нужно его десериализовать как строку.Deserialize Свойство объекта JSON для строки
Пример JSON:
{"simpleProperty": "value1", "json":{"a":"a1", "b":"b1"}}
"JSON" объект не имеет набор структуры, кроме это будет действительным объектом JSON.
Итак, в приведенном выше примере значение «json» является объектом JSON, но когда он получает десериализацию, мне нужна его как строка.
Так что, если мой C# класс:
public class MyClass
{
public string SimpleProperty { get; set; }
public string Json { get; set; }
}
И потом, если я использую:
var myClass = JsonConvert.DeserializeObject<MyClass>(jsonStr);
Я хотел myClass.Json просто быть простой строкой.
Я смотрел на создание пользовательского JsonConverter для этого, но это кажется слишком сложным для чего-то такого простого. Мне, должно быть, что-то не хватает. Любое направление было бы высоко оценено.
Я также видел этот пост - но на самом деле не дает ответа на вопрос: JSON.Net - How to deserialize JSON to object but treating a property as a string instead of JSON?
Метод 'CanConvert' не будет вызываться, если вы используете атрибут' [JsonConverter] 'для класса или свойства, потому что Json.Net уже знает, что ваш конвертер может обрабатывать этот тип. (Вы сказали это, добавив атрибут.) 'CanConvert' вызывается, если вы не используете атрибут' [JsonConverter] 'и вместо этого передаете экземпляр преобразователя в сериализатор через настройки. В этом случае Json.Net должен спросить конвертер, может ли он обрабатывать каждый тип, с которым он сталкивается. Поэтому вы хотите, чтобы метод CanConvert возвращал значение true для типа объекта, для которого ваш конвертер предназначен для обработки. –
ok - спасибо за объяснение. – csheets