Я должен декодировать строку JSON, содержащую другую строку JSON. В настоящее время я пытаюсь декодировать его в Dictionary<string,string>
используя Serializator.Deserialize<Dictionary<string,string>>(value)
из System.Web.Script.Serialization
, но не получилось.
Это строка:
{
"label": "Side",
"options": [
{
"key": "left",
"value": 0
},
{
"key": "right",
"value": 1
}
]
}
И это ошибка формата, которую я получаю от декодера:
(System.ArgumentException HResult = 0x80070057 Сообщение = Передан недопустимый объект, ожидается ':' или '}'. (34): {"label": "Side", "options": "[{" key ":" left ", "value": 0}, {"key": "right", "value": 1}] "} Source = System.Web.Extensions) Это означает, что он получает" [{"в виде строки и, следовательно, не может преобразовать конечно...
Есть ли способ, которым я могу декодировать эту конкретную строку JSON и сохранить ее в объекте? Клиент очень специфичен в этом формате JSON... Большое спасибо
Представьте свой json
так:
{
"label": "Side",
"options": "[{ 'key': 'left', 'value': '0'},{ 'key':'right', 'value':1}]"
}
внутри JSON с одинарными кавычками
предположим, у вас есть два класса:
public class YourObject
{
public string label { get; set; }
public string options { get; set; }
}
public class InsideObject
{
public string key { get; set; }
public int value { get; set; }
}
так что у вашего json есть другой json в виде строки под ключом "options", и вы можете извлечь их оба так:
string json = "{\"label\": \"Side\", \"options\": \"[{ 'key': 'left', 'value': '0'},{ 'key':'right', 'value':1}]\"}";
var jsonObj = JsonConvert.DeserializeObject<YourObject>(json);
var insideObj = JsonConvert.DeserializeObject<InsideObject>(jsonObj.options);
PS здесь использовал Newtonsoft
json
таким образом (и хранить объект в форме строки), на мой взгляд, находится на том же уровне, что и использование объекта везде: D
Наконец я использовал формат строки следующим образом:
{
"label": "Side",
"options": [
{
"key": "left",
"value": 0
},
{
"key": "right",
"value": 1
}
]
}
и сохраните все JSON в Dictionary< string, object >
. Затем я реализую метод для декодирования объекта внутри JSON.
Как уже упоминал Мэтт в своем комментарии, ваш JSON недействителен, вместо "[{"key"
должно быть [{"key"
и вместо }]"}
должно быть }]}
.