【问题标题】:How to make nested json from json string如何从json字符串制作嵌套的json
【发布时间】:2018-06-24 21:05:54
【问题描述】:

我正在尝试创建嵌套的 json 字符串,下面是我的 json 字符串,

[  
   {  
      'CompanyID':'1',
      'Name':'Company1',
      'DepartmentName':'Executive General and Administration',
      'ModifiedDate':'2005-06-01 00:00:00.000',

   },
   {  
      'CompanyID':'2',
      'Name':'Company2',
      'DepartmentName':'Executive General and Administration',
      'ModifiedDate':'2005-06-01 00:00:00.000',

   },
   {  
      'CompanyID':'3',
      'Name':'Company3',
      'DepartmentName':'Executive General and Administration',
      'ModifiedDate':'2005-06-01 00:00:00.000',

   }
]

我想要这样的结果

[  
   {  
      'CompanyID':'1',
      'Name':'Company1',
       department":{
            'DepartmentName': 'Dpt1'
       }
    }
]

我想要这个 json 字符串的公司明智部门...我使用了 Jarray 但没有这样做...

我的代码:

string jsonCompany = "[{'CompanyID' : '1','Name' : 'Company1','DepartmentName' : 'D1','ModifiedDate' : '2005-06-01 00:00:00.000',},{'CompanyID' : '2','Name' : 'Company2','DepartmentName' : 'D2','ModifiedDate' : '2005-06-01 00:00:00.000',},{'CompanyID' : '1','Name' : 'Company3','DepartmentName' : 'D3','ModifiedDate' : '2005-06-01 00:00:00.000',}]";

string jsonDept = "[{'DepartmentID' : '91','Name' : 'Executive84','GroupName' : 'Executive General and Administration','ModifiedDate' : '2005-06-01 00:00:00.000',},{'DepartmentID' : '92','Name' : 'Executive85','GroupName' : 'Executive General and Administration','ModifiedDate' : '2005-06-01 00:00:00.000',},{'DepartmentID' : '93','Name' : 'Executive86','GroupName' : 'Executive General and Administration','ModifiedDate' : '2005-06-01 00:00:00.000',}]";

object dynJsonCmp = JsonConvert.DeserializeObject(jsonCompany);

dynamic dynJsonDept = JsonConvert.DeserializeObject(jsonDept);

【问题讨论】:

  • 不清楚你在问什么。你能描述一下“公司明智的部门”吗?真正的问题是什么?
  • 您知道每个权利的末尾都有一个额外的, 吗?只是让你知道
  • 实际上我想要嵌套 json 像公司明智的部门列表...它是我的 json 字符串中的一个部门,但它会导致嵌套 json
  • 这与 MVC 有什么关系?它是发送到控制器还是从控制器发送?
  • 您为什么将jsonDept 字符串添加到您的问题中?这不是您转换的预期输出,那您为什么要展示它?另外,'DepartmentName': 'Dpt1' 值从何而来? Dpt1 不会出现在输入字符串的任何位置。

标签: c# json model-view-controller


【解决方案1】:

这种操作最简洁的方法之一是使用类。 根据您最初提供的 json 和您最初的问题,您可以执行以下操作。:

class Company
{

    public int CompanyID { get; set; }
    public string Name { get; set; }
    public string DepartmentName { get; set; }

    public object Modify => new {
        CompanyID, Name, department = new { DepartmentName }
    };

}

然后你可以简单的反序列化成列表,在Linq的帮助下转换并序列化

var modifiedList = JsonConvert.DeserializeObject<List<Company>>(jsonCompany).Select(c => c.Modify);
string updatedJson = JsonConvert.SerializeObject(modifiedList);

由于您的代码似乎显示了不同的 json,您可能需要根据您实际尝试执行的操作修改 Linq 部分。您可以查看 Linq 以检查您到底想要做什么。

【讨论】:

  • 我想你已经成功地理解了问题所在!
  • 在最新的编辑中,前两个块已经很清楚了。然而,正如包括我在内的许多人所提到的,第三个仍然是矛盾的
猜你喜欢
  • 2017-10-25
  • 1970-01-01
  • 2017-07-05
  • 1970-01-01
  • 2023-01-22
  • 1970-01-01
  • 2020-02-16
  • 1970-01-01
相关资源
最近更新 更多