如何在Java中将复杂的JSON转换为CSV

anauzrmj  于 2022-12-20  发布在  Java
关注(0)|答案(1)|浏览(163)

我有一个复杂的贾森文件,我希望它能转换成CSV文件使用Java Spring启动。
下面是我的复杂json文件:

{
  "requestId": "1P02XV425KCASEZGQLB8LPQMF4ZXCURRR01",
  "recyleBinRecords": [
    {
      "Record": {
        "ProductName": "Name1",
        "Id": "1P02XV425KCASEZGQLB8LPQMF4ZXCUBCTA01"
        "ProductArea": "Area1"
      },
      "dependecyMaterial": [
        {
          "Name": "D1",
          "id": "1P02XV425KCASEZGQLB8LPQMF4ZXCUBCTA01",
          "parentid": "1P02XV425KCASEZGQLB8LPQMF4ZXCUBCTA01",
          "value": "Value1"
        },
        {
          "Name": "d2",
          "id": "1P02XV425KCASEZGQLB8LPQMF4ZXCUBCTA01",
          "parentid": "1P02XV425KCASEZGQLB8LPQMF4ZXCUBCTA01",
          "value": "value2"
        }]},{
      "Record": {
        "ProductName": "Name2",
        "Id": "1P02XV425KCASEZGQLB8LPQMF4ZXCUBCTA01",
        "ProductArea": "Product2"
      },
      "dependecyMaterial": [
        {
          "Name": "D3",
          "id": "1P02XV425KCASEZGQLB8LPQMF4ZXCUBCTA01",
          "parentid": "P1",
          "value": "value1"
        },
        {
          "Name": "D4",
          "id": "1P02XV425KCASEZGQLB8LPQMF4ZXCUBCTA01",
          "parentid": "P2",
          "value": "value2"
        }
      ]
    }
  ]
}

下面是我尝试过的代码,但它没有给出任何异常。
x一个一个一个一个x一个一个二个x
需要一个解决方案来转换我的JSON到CSV在java.

nzrxty8p

nzrxty8p1#

有几个原因会导致这种情况。出现异常的主要原因是您的csv架构没有要Map的列。运行调试器,查看JsonNode firstObject = jsonTree.elements().next();行返回的内容以及运行firstObject.fieldNames().forEachRemaining(fieldName -> {csvSchemaBuilder.addColumn(fieldName);} );时向架构添加了哪些字段
话虽如此,由于CSV生成器不支持嵌套对象,解析可能仍然无法完成。有几种方法可以处理这种情况。您可以编写一个自定义方法来处理结构并输出扁平化数据,或者使用库来处理转换。我过去使用过的一种方法是使用JOLT库(json到json转换)来预处理JSON,创建一个临时文档并解析它。请参阅此答案中的详细信息-从spring-boot控制器以CSV文件的形式返回JSON响应

相关问题