修改json的结构

时间:2018-06-26 02:36:41

标签: javascript c# json

我正在尝试在json中修改以下文本。下面的链具有以下结构:

  {
  "cabecera": {
    "tipo_cambio": "",
    "fecha_emision": "",
    "total": ""
  },
  "detalle": {
    "940b130369614bd6b687dc5b41623439": {
      "producto": "94115891",
      "detalle_adicional": "",
      "cantidad": "",
      "precio_unitario": "",
      "subtotal": "",
      "total": ""
    },
    "6cbdcef2bbff4b059c8de7432c9aa5f2": {
      "producto": "6738756",
      "detalle_adicional": "",
      "cantidad": "",
      "precio_unitario": "",
      "subtotal": "",
      "total": ""
    }
  }
}

我想将其修改为以下结构,以使“ 940b130369614bd6b687dc5b41623439”之类的代码消失,而dtalle成为and数组。

{
  "cabecera": {
    "tipo_cambio": "",
    "fecha_emision": "",
    "total": ""
  },
  "detalle": [
    {
      "producto": "94115891",
      "detalle_adicional": "",
      "cantidad": "",
      "precio_unitario": "",
      "subtotal": "",
      "total": ""
    },
    {
      "producto": "6738756",
      "detalle_adicional": "",
      "cantidad": "",
      "precio_unitario": "",
      "subtotal": "",
      "total": ""
    }
  ]
}

在C#中有什么方法吗?

1 个答案:

答案 0 :(得分:0)

这是一个解决问题的小型C#程序

string origJson =
@"{
""cabecera"": {
    ""tipo_cambio"": """",
    ""fecha_emision"": """",
    ""total"": """"
},
""detalle"": {
    ""940b130369614bd6b687dc5b41623439"": {
    ""producto"": ""94115891"",
    ""detalle_adicional"": """",
    ""cantidad"": """",
    ""precio_unitario"": """",
    ""subtotal"": """",
    ""total"": """"
    },
    ""6cbdcef2bbff4b059c8de7432c9aa5f2"": {
        ""producto"": ""6738756"",
        ""detalle_adicional"": """",
        ""cantidad"": """",
        ""precio_unitario"": """",
        ""subtotal"": """",
        ""total"": """"
    }
}
}";

JObject obj = JObject.Parse(origJson);
JArray detalleChilds = new JArray(obj.SelectToken("detalle").Select(x => x.Children()));

obj.Remove("detalle");
obj.Add("detalle", detalleChilds);

Console.WriteLine(obj);

要使用此示例,您需要安装Newtonsoft.Json NuGet

<PackageReference Include="Newtonsoft.Json" Version="11.0.2" />