从spring-boot控制器返回CSV文件形式的JSON响应

8tntrjer  于 2022-12-13  发布在  Spring
关注(0)|答案(1)|浏览(175)

在我的spring-boot项目中,我从一个JSON格式的外部API获取信息。

{
  "id":237,
  "first_name":"LeBron",
  "last_name":"James",
  "position":"F",
  "height_feet": 6,
  "height_inches": 8,
  "weight_pounds": 250,
  "team":{
      "id":14,
      "abbreviation":"LAL",
      "city":"Los Angeles",
      "conference":"West",
      "division":"Pacific",
      "full_name":"Los Angeles Lakers",
      "name":"Lakers"
  }
}

我的任务是从这个JSON响应中返回一个CSV文件。我在互联网上寻找一些信息,只能找到一个普通JSON到CSV的转换,但是我得到的JSON响应是嵌套的,转换不起作用。我该怎么做呢?我该怎么做?任何帮助将不胜感激。

wgx48brx

wgx48brx1#

一种方法是对JSON数据进行预处理,并将其转换为平面JSON结构。您可以编写自己的方法来完成此操作,也可以使用JOLT库来完成此操作:

样品规格

[
  {
    "operation": "shift",
    "spec": {
      "*": "&",
      "team": {
        "id": "team-id",
        "abbreviation": "team-abbreviation",
        "city": "team-city",
        "conference": "team-conference",
        "division": "team-division",
        "full_name": "team-full-name",
        "name": "team-name"
      }
    }
  }
]

将JSON转换为

{
  "id" : 237,
  "first_name" : "LeBron",
  "last_name" : "James",
  "position" : "F",
  "height_feet" : 6,
  "weight_pounds" : 250,
  "team-id" : 14,
  "team-abbreviation" : "LAL",
  "team-city" : "Los Angeles",
  "team-conference" : "West",
  "team-division" : "Pacific",
  "team-full-name" : "Los Angeles Lakers",
  "team-name" : "Lakers"
}

有关JOLT的更多信息,请访问https://github.com/bazaarvoice/jolt#Demo
您还可以在www.example.com上创建的演示页面上现场演示和测试您的规范http://jolt-demo.appspot.com/#inception

编辑:在进一步阅读文档后-以下是一个较短版本的规范,它将获得与上面给出的结果类似的结果:

[
  {
    "operation": "shift",
    "spec": {
      "*": "&",
      "team": {
        "*": "team-&"
      }
    }
  }
]

相关问题