csrss Ответов: 2

Разобрать строку JSON в объекты c#


- Привет! Здесь я имею дело с нестандартной строкой json:
string a = "[[\"test, test\",\"{\\\"prop1\\\":1,\\\"prop2\\\":\\\"test\\\",\\\"prop3\\\":\\\"test\\\"}\"],[\"test2, test2\",\"{\\\"prop1\\\":2,\\\"prop2\\\":\\\"test2\\\",\\\"prop3\\\":\\\"test2\\\"}\"]]";

И пытается разобрать эту строку на объект. Пробовал, вроде, все : (ничего не работает. Я не совсем уверен, правильно ли я понимаю эту структуру json. Я был бы очень признателен, если бы кто-нибудь мог мне в этом помочь. Вот отформатированный JSON:
[
	[
		"test",
		{
			"prop1": 1,
			"prop2": "test",
			"prop3": "test"
		}
	],
	[
		"test2",
		{
			"prop1": 2,
			"prop2": "test2",
			"prop3": "test2"
		}
	]
]

Но я все еще не понимаю его структуры.

Что я уже пробовал:

Я создал несколько объектов для этого json, насколько я могу понять его структуру. Вот они:
class Details
{
    public int prop1 { get; set; }
    public string prop2 { get; set; }
    public string prop3 { get; set; }
}
class Name
{
    public string FullName { get; set; }
}
class Class
{
    public Name FullName { get; set; }
    public Details Details { get; set; }
}

И пытается десериализоваться таким образом:
string a = "[[\"test, test\",\"{\\\"prop1\\\":1,\\\"prop2\\\":\\\"test\\\",\\\"prop3\\\":\\\"test\\\"}\"],[\"test2, test2\",\"{\\\"prop1\\\":2,\\\"prop2\\\":\\\"test2\\\",\\\"prop3\\\":\\\"test2\\\"}\"]]";
List< Class > obj = JsonConvert.DeserializeObject<List<Class>>(a);

Richard MacCutchan

Если вы избавитесь от всех этих символов обратной косой черты и правильно переформатируете оставшийся текст, вам будет легко понять его структуру. Может быть, если бы вы объяснили, какая у вас проблема, тогда люди смогли бы внести свои предложения.

csrss

Вот отформатированный json:
[
[
"тест",
{
"которых prop1": 1,
"prop2": "тест",
"prop3": "тест"
}
],
[
"тест2",
{
"которых prop1": 2,
"prop2": "test2",
"prop3": "test2"
}
]
]

Я до сих пор понятия не имею, что такое структура объекта.

2 Ответов

Рейтинг:
2

Graeme_Grant

Эта статья покажет вам более простой способ: Работа с JSON в C# и VB[^]


Рейтинг:
0

csrss

Ладно, нашел способ.:

JArray array = JArray.Parse(a);
foreach(JToken jToken in array)
{
    JToken[] innerArray = jToken.ToArray();
    string fullName = innerArray[0].Value<string>();
    Details details = JObject.Parse(innerArray[1].Value<string>()).ToObject<Details>();
}