Задать вопрос
@run182

Как в c# сортировать json объекты?

Как сортировать этот объект, а так же вложенные?
{
    "30": {
       "3":{},
       "0":{}
    },
    "11":{}
}
  • Вопрос задан
  • 590 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
@run182 Автор вопроса
Нашел такое решение:
public static void Main()
	{
		string json = @"{300:[{'Lygis':2,'Patiekalo_ID':30}],110:[{'Lygis':3,'Patiekalo_ID':31}]}";
		var jObj = (JObject)JsonConvert.DeserializeObject(json);
		Sort(jObj);
		string newJson = jObj.ToString();
		Console.WriteLine(newJson);
	}
	static void Sort(JObject jObj)
	{
		var props = jObj.Properties().ToList();
		foreach (var prop in props)
		{
			prop.Remove();
		}

		foreach (var prop in props.OrderBy(p=>Int32.Parse(p.Name)))
		{
			jObj.Add(prop);
			if(prop.Value is JObject)
				Sort((JObject)prop.Value);
		}
	}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
Exomode
@Exomode
Архитектор ПО
1. Спарсить весь json в Dictionary с помощью Newtonsoft.Json или других средств;
2. Сортировать через Linq либо по ключам словаря, либо по значениям.
Ответ написан
freeExec
@freeExec
Участник OpenStreetMap
Json - это текст, он не сортируется.
Json нужно преобразовать в объект (модель данных). Но и там сортировать можно только списки, а у вас не списки.
Смотрите всякие SimpleJson, Newtonsoft и прочие.
Ответ написан
@BashkaMen
C# программист
var json = "{\r\n    \"30\": {\r\n       \"3\":{},\r\n       \"0\":{}\r\n    },\r\n    \"11\":{}\r\n}";
var dict = JsonConvert.DeserializeObject<Dictionary<int, Dictionary<int, object>>>(json);

var res = dict.OrderBy(s => s.Key).ToDictionary(s=> s.Key, s=> s.Value);


Отсортировал по ключам
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы