Cashi Ответов: 1

Десериализации сложных, переменная JSON на C#


Привет,

у меня есть переменная Json, и я хочу десериализовать ее с помощью Newtonsoft.Json.
Этот тип Json не сможет быть преобразован в класс c#. Что же делать?
Заранее спасибо.

"VariableKeyxxx123" - ключи могут встречаться несколько раз со случайными именами.
В некоторых случаях есть "более высокие значения".


{
	"result": 
	{
		"computers": {
			"variableKeyxxx123": 
			{
				"id": 3333,
				"name": "name1",
				"xvalues": "xxValues"
			},
			"variableKeyxxx862": 
			{
				"id": 4444,
				"name": "name2",
				"xvalues": "xxValues"
			},
			"variableKeyxxx442": 
			{
				"id": 55555,
				"name": "name3",
				"xvalues": "xxValues",				
				"morevalues": {
					"valuexy": "hello"
				}
			}
		}
	}
}


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

Попробовал jsonToC# и Newtonsoft.Json, но создание класса из приведенного выше ответа вызовет ошибки, поскольку компьютеры называются как в ответе.

public class Computers
{
    public VariableKeyxxx123 variableKeyxxx123 { get; set; }
    public VariableKeyxxx862 variableKeyxxx862 { get; set; }
    public VariableKeyxxx442 variableKeyxxx442 { get; set; }
}

F-ES Sitecore

Вместо десериализации в конкретный класс, который вы создаете сами, вы можете заставить Newtonsoft сериализоваться в структуру классов JObject, которые смогут обрабатывать случайность структуры, но вам нужно будет проделать некоторую работу, чтобы пройти через структуру и извлечь нужные данные. Google tutorials on newtonsoft, и вы должны найти тот, который включает в себя десериализацию объектов newtonsoft.

Cashi

Ладно, Спасибо. Думал, можно было бы и красивее.

1 Ответов

Рейтинг:
0

Marc Clifton

Newtonsoft поддерживает ExpandoObject, в частности для поддержки JSON, который не может быть определен "схемой" и, следовательно, строго типизированным классом.