Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从URL获取JSON信息,然后将JSON放入并组织到CSV文件中_Java_Json_Csv_Url - Fatal编程技术网

Java 从URL获取JSON信息,然后将JSON放入并组织到CSV文件中

Java 从URL获取JSON信息,然后将JSON放入并组织到CSV文件中,java,json,csv,url,Java,Json,Csv,Url,我需要从API中获取JSON信息,然后(通过CSV)将其组织信息填充到excel文件中。让我困惑的是将数据组织到excel(CSV)文件中,json只在一行上打印。我能举个例子说明如何做到这一点吗?我很困惑 我已经知道如何从api接收JSON数据并创建csv文件,但是JSON数据打印在一行上 我需要将文件组织成列,如(名称、日期等),然后用json数据中的相应信息填充这些列 谢谢。由于最小化的json比要发送的格式化json更便宜,因此您肯定从API获得了一行json 为了从json中获取信息,

我需要从API中获取JSON信息,然后(通过CSV)将其组织信息填充到excel文件中。让我困惑的是将数据组织到excel(CSV)文件中,json只在一行上打印。我能举个例子说明如何做到这一点吗?我很困惑

我已经知道如何从api接收JSON数据并创建csv文件,但是JSON数据打印在一行上

我需要将文件组织成列,如(名称、日期等),然后用json数据中的相应信息填充这些列


谢谢。

由于最小化的json比要发送的格式化json更便宜,因此您肯定从API获得了一行json

为了从json中获取信息,您可以查看json指针,它允许您从中获取特定信息


检索完所有信息后,您必须使用所选数据构建csv文件。

假设您的JSON如下所示:

{"foo":"bar", "baz":"qux"}
您需要将其转换为此csv,并带有标题行:

foo,baz
bar,qux
执行此操作的典型方法如下所示:

  • 调用API,获取JSON响应
  • 将JSON反序列化为对象。这可以是一个POJO,或者如果您的数据很简单,您可以将其粘贴到
    映射中
  • 将对象序列化为CSV并将其写入文件系统
  • 提供了一个优秀的JSON处理API,因此使用Jackson执行此操作的方式如下:

    {"foo":"bar", "baz":"qux"}
    
    创建您的POJO:

    public class MyBean { 
        @JsonProperty
        private String foo
    
        @JsonProperty
        private String baz
    
    }
    
    将JSON反序列化到
    MyBean
    类中:

    ObjectMapper om = new ObjectMapper();
    MyBean b = om.readValue(jsonText, MyBean.class)
    
    现在您只需要输出CSV文本

    String csv = "foo,baz\n" + b.getFoo() + "," + b.getBaz();
    BufferedWriter writer = new BufferedWriter(new FileWriter(fileName));
    writer.write(csv);
    

    当然,如果你在谷歌上搜索一下,有更好的方法写出CSV。

    你需要将JSON转换成CSV格式。这是一个手动过程,您可以提取希望在每一行中表示的数据。也就是说,你的问题中没有代码。您尝试过什么?CSV文件在一行上表示所有数据的事实与JSON格式的廉价方式无关。您能解释一下POJO是什么意思吗?另外,如果我的JSON像{data:{name:{firstname middlename lastname}}}那样嵌套,我会怎么做?但是谢谢你告诉我jackson的事,为我指明了写的方向!POJO=普通的旧java对象。如果JSON结构是嵌套的,那么java对象也应该是嵌套的。因此,采用JSON格式,创建具有相同层次结构的简单java类。