Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.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编写json的最佳CSV格式是什么?_Java_Csv - Fatal编程技术网

用JAVA编写json的最佳CSV格式是什么?

用JAVA编写json的最佳CSV格式是什么?,java,csv,Java,Csv,我想使用JAVA将以下JSON写入CSV文件。什么是最好的CSV格式 "order_items": { "items": [{ "name1": "I1", "name2": "I2", "name3": "I3" }, { "name1": "J1", "name2": "J2", "name3": "J3" }], "date": "XXXX-xx-xx", "time": "hh

我想使用JAVA将以下JSON写入CSV文件。什么是最好的CSV格式

"order_items": {
    "items": [{
      "name1": "I1",
      "name2": "I2",
      "name3": "I3"
    }, {
      "name1": "J1",
      "name2": "J2",
      "name3": "J3"
    }],
    "date": "XXXX-xx-xx",
    "time": "hh:min:ss"
  }

JSON是层次结构,而CSV是普通结构。这意味着CSV只能保存属于同一类型的相似数据。在您的情况下,您可以按以下方式呈现项目:

name1, namee2, name3
I1, I2, I3
j1, j2, j3
但是,不能将日期和时间放在同一个结构中。您可以单独保存它们(例如,在单独的文件中),或对每行的数据保存日期和时间进行反规范化:

name1, namee2, name3, date, time
I1, I2, I3, XXXX-xx-xx, hh:min:ss
j1, j2, j3, "XXXX-xx-xx, hh:min:ss
IMHO看起来很丑,但有时很有用


如果您将CSV另存为文件,您可能可以将日期和时间编码到文件名中,例如,创建包含名称为“
data.XXXX xx xx.hh:min:ss.CSV”的项目(见第一个示例)的文件

长答案:

CSV旨在满足二维需求。为了使用它,您需要定义一个固定维度JSon(您可能知道JSon可以是任意层次结构。例如,如果JSon是三维的,如
项:{arr1:[item1,item2,item3],arr2:[item1,item2,item3]}
,那么它将有三个分隔符。假设分隔符是逗号、连字符和加号(为了解释)那么CSV将是
items-arr1+item1、item2、item3-arr2+item1、item2、item3


出于上述原因,我不建议这样做。我建议您找到一种将文件保存为纯JSon的方法,或者以某种方式对其进行序列化/反序列化,而不是将其弄乱!

由于CSV只是二维的(单元格行),但JSon可以任意嵌套,在一般情况下,这将变得非常尴尬。在值之间使用逗号:)我猜你是在问如何处理这些“物品”对象数组。这取决于CSV数据的使用方式。是否会将其导入电子表格以供人员查看?在这种情况下,您应该关注布局,以便显示聚合。如果数据将由其他软件使用,则您需要写出一个平面视图,其中包括每个项目的所有相关值Entest.Thank。是否可以在一行中写入所有内容并仍然区分“items”数组值?基本上,我要求为每个JSON写入一行内容。请看我的第二个示例。只有在数据(日期和时间)重复的情况下才能实现这一点。