none
合并相同Key的Json数组问题 RRS feed

  • 问题

  • 假如有下面这样一个json数组对象,如果出现key相同时,如何进行对象合并,如 "现病史" 这个集合中出现了两个 "children" 相同的数组,这在json中是不允许的,请问如何合并呢?在.net后端能否实现  谢谢。

    {[

      {
        "name": "入院记录"
      },
      
      {
        "name": "入院时间",
        "children": [
          {
            "name": "入院时间"
          }
        ]
      },
      {
        "name": "现病史",
        "children": [
          {
            "name": "入院记录 病因与诱因"
          },
          {
            "name": "入院记录 伴随症状"
          }
        ],
        "children": [
          {
            "name": "其他疾病情况",
            "children": [
              {
                "name": "入院记录 仍需治疗的其他疾病"
              }
            ]
          },
          {
            "name": "服药情况",
            "children": [
              {
                "name": "入院记录 目前口服药物"
              },
              {
                "name": "药物"
              }
            ]
          }
        ]
      },
      {
        "name": "既往史",
        "children": [
          {
            "name": "肝炎病史"
          },
          {
            "name": "结核病史"
          },
          {
            "name": "高血压病史"
          }
        ]
      }
    ]}

    2018年7月1日 4:39

答案

  • 这样的格式是错误的,应该用一个数组来表示

    "children": [
          {
            "name": "入院记录 病因与诱因"
          },
          {
            "name": "入院记录 伴随症状"
          }
        ],
        "children": [
          {
            "name": "其他疾病情况",
            "children": [
              {
                "name": "入院记录 仍需治疗的其他疾病"
              }
            ]
          },

    Newtonsoft.Json.dll 将它读出来,再写到另一个json文件中去。

    或是与您说的一致,在后台处理时,判断下是否有重复的,有则用数组表示。

    Dictionar<string,JArrary>   json=...

    if(!json.ContainsKey("children") 

         json.Add("children", ...);

    }

    else 

    {    

        JArray  array=  json["children"];

       array.Add();

    }


    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    • 已标记为答案 lovenet2010 2018年10月24日 13:33
    2018年7月3日 0:10

全部回复

  • 补充下,相同的属性名,是非法的json了,如果属性名不相同的json数组,在后端能进行合并吗?如何合并?
    2018年7月1日 5:38
  • 这样的格式是错误的,应该用一个数组来表示

    "children": [
          {
            "name": "入院记录 病因与诱因"
          },
          {
            "name": "入院记录 伴随症状"
          }
        ],
        "children": [
          {
            "name": "其他疾病情况",
            "children": [
              {
                "name": "入院记录 仍需治疗的其他疾病"
              }
            ]
          },

    Newtonsoft.Json.dll 将它读出来,再写到另一个json文件中去。

    或是与您说的一致,在后台处理时,判断下是否有重复的,有则用数组表示。

    Dictionar<string,JArrary>   json=...

    if(!json.ContainsKey("children") 

         json.Add("children", ...);

    }

    else 

    {    

        JArray  array=  json["children"];

       array.Add();

    }


    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    • 已标记为答案 lovenet2010 2018年10月24日 13:33
    2018年7月3日 0:10