繁体   English   中英

如何将JSON结构转换为另一个结构并在其中添加一个额外的字段

[英]how to convert a JSON structure to another and add a extra field in to it

我有来自API的json数据。 json的结构是这样的

{
"data": [
    {
        "nameid": "s_10",
        "size": "6.46",
        "name": "abc",
        "children": [
            {
                "nameid": "i_101010",
                "size": "8.84",
                "name": "bcd",
                "children": [
                    {
                        "nameid": "si_10101010",
                        "size": "4.00",
                        "name": "efg",
                        "children": [
                            {
                                "nameid": "c_3273",
                                "size": 4,
                                "name": "ttt",
                            }
                        ]
                    },
                    {
                        "nameid": "si_10101020",
                        "size": "13.67",
                        "name": "sss",
                        "children": [
                            {
                                "nameid": "c_4450",
                                "size": 1,
                                "name": "rrr",
                            },
                            {
                                "nameid": "c_551",

                                "size": 17,
                                "name": "ddd",

                            },

我需要将其转换为以下结构

  {
"id": 1,
"parentId": "NULL",
"name": "Root",
"size": 5,
"children": [
{
"id": 10,
"parentId": "1",
"name": "En",
"size": 1,
"children": [
 {
  "id": 1010,
  "parentId": "10",
  "name": "Eee",
  "size": 1,
  "children": [
   {
    "id": 101010,
    "parentId": "1010",
    "name": "Enh",
    "size": 5,
    "children": [
     {
      "id": 10101010,
      "parentId": "101010",
      "name": "Ooo",
      "size": 5
     },

简而言之,我需要将该字段父ID添加到第一个JSON中

注意:这些是部分数据,因此json可能不是有效的数据。

如果您的源对象和目标对象是Typed类(例如,公共类FamilyMembers

自动映射器是实现此目标的最佳方法。

http://automapper.org/

假设您的“数据”来源是Families类,您可以将Families映射到FamilyMembers

//specify source, destination
Mapper.CreateMap<Families, FamilyMembers>(); 

//get source data
Families families = GetFamiliesFromAPI(); 

//map each properties of  families to familymembers
FamilyMembers familymembers = Mapper.Map<Families, FamilyMembers>(families); 

ShowFamilyMembersInDataGrid(familymembers);

如果您不想使用Automapper,请使用LINQ

Families families = GetFamiliesFromAPI(); 
families.Select(f => f, new FamilyMembers() {name = f.Name, someProperty = f.someProperty }

由于您已经嵌套了JSON对象,因此您需要学习如何处理源数据中的“ children”成员,以及如何通过LINQ进行映射

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM