当前位置: 首页 > 面试题库 >

C#排序JSON字符串键

蓬琦
2023-03-14
问题内容

我想转换JSON字符串

"{ \"birthday\": \"1988-03-18\", \"address\": { \"state\": 24, \"city\": 8341, \"country\": 1 } }"

"{ \"address\": { \"city\": 8341, \"country\": 1, \"state\": 24 }, \"birthday\": \"1988-03-18\" }"

注意:我没有使用排序的版本进行通信(因为键顺序并不重要),我需要一个排序的版本来执行本地测试(通过比较JSON字符串)。

编辑:
I4V指出了使用Json.Net的解决方案,我宁愿使用不需要包含任何第三方库的解决方案(实际上,我在应用程序中使用内置的System.Json)

我张贴由I4V +一些测试提供的解决方案要点这里。谢谢你们。


问题答案:

我将为此使用Json.Net

string json = @"{ ""birthday"": ""1988-03-18"", ""address"": { ""state"": 24, ""city"": 8341, ""country"": 1 } }";
var jObj = (JObject)JsonConvert.DeserializeObject(json);
Sort(jObj);
string newJson = jObj.ToString();
void Sort(JObject jObj)
{
    var props = jObj.Properties().ToList();
    foreach (var prop in props)
    {
        prop.Remove();
    }

    foreach (var prop in props.OrderBy(p=>p.Name))
    {
        jObj.Add(prop);
        if(prop.Value is JObject)
            Sort((JObject)prop.Value);
    }
}

编辑

尝试一下,System.Json但我不确定OrderByDescending(或OrderBy)。

var jObj = (System.Json.JsonObject)System.Json.JsonObject.Parse(json);
Sort2(jObj);
var newJson = jObj.ToString();
void Sort2(System.Json.JsonObject jObj)
{
    var props = jObj.ToList();
    foreach (var prop in props)
    {
        jObj.Remove(prop.Key);
    }

    foreach (var prop in props.OrderByDescending(p => p.Key))
    {
        jObj.Add(prop);
        if (prop.Value is System.Json.JsonObject)
            Sort2((System.Json.JsonObject)prop.Value);
    }
}


 类似资料:
  • 我正在玩排序数组,我弄清楚了如何对int数组进行合并排序。但是我不知道合并字符串数组。在正常排序时,对字符串数组进行排序很容易,但合并排序不同。我到目前为止所做的代码如下,正在处理int数组。

  • 问题内容: 我有一列varchar类型,可存储许多不同的数字。例如说有3行:17.95、199.95和139.95。如何在mysql中将该字段作为数字排序 问题答案: 使用CAST或CONVERT函数。

  • 实现 (Implementation) 现在,我们将看到该计划的实际执行情况 - #include <stdio.h> #include <string.h> int main (void) { char string[] = "simplyeasylearning"; char temp; int i, j; int n = strlen(string); prin

  • 本文向大家介绍python字符串排序方法,包括了python字符串排序方法的使用技巧和注意事项,需要的朋友参考一下 本文以实例形式简述了Python实现字符串排序的方法,是Python程序设计中一个非常实用的技巧。分享给大家供大家参考之用。具体方法如下: 一般情况下,python中对一个字符串排序相当麻烦: 一、python中的字符串类型是不允许直接改变元素的。必须先把要排序的字符串放在容器里,如

  • 我有一个对象的,需要根据进行排序。 列表中的每个对象都包含以下内容 现在,假设我想先按“”下单,然后按“”下单。所以苹果排名第一,芒果紧随其后。 我可以做一个普通的asc/desc排序,但这是不够的。也可以使用apache公共资源来做上面的排序?

  • 我有字符串数组:15MB、12MB、1TB、1GB。我想通过遵循MB小于GB和TB的规则来对它们进行词典比较。所以最后我想得到:12MB,15MB,1GB,1TB。我找到了一个比较字母的方法: 我在考虑用数字和字母拆分字符串,但我如何用字母“MB”对它们进行排序。然后根据他们的数字。我是使用两个比较器还是其他什么?