Большая часть вашего форматирования на самом деле в порядке.У вас просто не может быть пробелов между {
и "__type"
.
Смотрите этот предыдущий ответ: Дессерализация JSON в абстрактный список с использованием DataContractJsonSerializer
Так, например, ваш пример кода пытается десериализовать эту строку JSON:
"{\r\n\t\"Mode\":\"And\",\r\n\t\"Elements\":\r\n\t[\r\n\t\t{\r\n\t\t\t\"__type\":\"SearchParameter:#JsonTest.Search\",\r\n\t\t\t\"Name\":\"LastName\",\r\n\t\t\t\"Operator\":\"Equal\",\r\n\t\t\t\"Value\":\"Smith\"\r\n\t\t},\r\n\t\t{\r\n\t\t\t\"__type\":\"SearchGroup:#JsonTest.Search\",\r\n\t\t\t\"Mode\":\"Or\",\r\n\t\t\t\"Elements\":\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\t\"__type\":\"SearchParameter:#JsonTest.Search\",\r\n\t\t\t\t\t\"Name\":\"FirstName\",\r\n\t\t\t\t\t\"Operator\":\"Equal\",\r\n\t\t\t\t\t\"Value\":\"Tim\"\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"__type\":\"SearchParameter:#JsonTest.Search\",\r\n\t\t\t\t\t\"Name\":\"FirstName\",\r\n\t\t\t\t\t\"Operator\":\"Equal\",\r\n\t\t\t\t\t\"Value\":\"Tom\"\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t}\r\n\t]\r\n}"
Форматированный:
{
"Mode":"And",
"Elements":
[
{
"__type":"SearchParameter:#JsonTest.Search",
"Name":"LastName",
"Operator":"Equal",
"Value":"Smith"
},
{
"__type":"SearchGroup:#JsonTest.Search",
"Mode":"Or",
"Elements":
[
{
"__type":"SearchParameter:#JsonTest.Search",
"Name":"FirstName",
"Operator":"Equal",
"Value":"Tim"
},
{
"__type":"SearchParameter:#JsonTest.Search",
"Name":"FirstName",
"Operator":"Equal",
"Value":"Tom"
}
]
}
]
}
Измените это на это, и ошибка уходитпрочь:
"{\r\n\t\"Mode\":\"And\",\r\n\t\"Elements\":\r\n\t[\r\n\t\t{\"__type\":\"SearchParameter:#JsonTest.Search\",\r\n\t\t\t\"Name\":\"LastName\",\r\n\t\t\t\"Operator\":\"Equal\",\r\n\t\t\t\"Value\":\"Smith\"\r\n\t\t},\r\n\t\t{\"__type\":\"SearchGroup:#JsonTest.Search\",\r\n\t\t\t\"Mode\":\"Or\",\r\n\t\t\t\"Elements\":\r\n\t\t\t[\r\n\t\t\t\t{\"__type\":\"SearchParameter:#JsonTest.Search\",\r\n\t\t\t\t\t\"Name\":\"FirstName\",\r\n\t\t\t\t\t\"Operator\":\"Equal\",\r\n\t\t\t\t\t\"Value\":\"Tim\"\r\n\t\t\t\t},\r\n\t\t\t\t{\"__type\":\"SearchParameter:#JsonTest.Search\",\r\n\t\t\t\t\t\"Name\":\"FirstName\",\r\n\t\t\t\t\t\"Operator\":\"Equal\",\r\n\t\t\t\t\t\"Value\":\"Tom\"\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t}\r\n\t]\r\n}"
Отформатировано:
{
"Mode":"And",
"Elements":
[
{"__type":"SearchParameter:#JsonTest.Search",
"Name":"LastName",
"Operator":"Equal",
"Value":"Smith"
},
{"__type":"SearchGroup:#JsonTest.Search",
"Mode":"Or",
"Elements":
[
{"__type":"SearchParameter:#JsonTest.Search",
"Name":"FirstName",
"Operator":"Equal",
"Value":"Tim"
},
{"__type":"SearchParameter:#JsonTest.Search",
"Name":"FirstName",
"Operator":"Equal",
"Value":"Tom"
}
]
}
]
}