gpt4 book ai didi

java - 使用 JSON 数据组织 CSV 文件

转载 作者:行者123 更新时间:2023-12-02 03:18:40 30 4
gpt4 key购买 nike

我正在尝试使用 json 数据填充 CSV 文件,但我需要以某种方式组织所有内容。我需要 json 键作为标题,关联值作为其下的数据,但是 json 的设置方式我可以在其中填充名称,但另一个标记为“items”的 block 中的信息需要拆分为多个单元格的键是标题,值填充表格。我不知道如何将 json block 的各个组件拆分为自己的单元格。

所以 CSV 应该设置为:

headers:       name            item1     item2    item3
data cells: [first last] [value1] [value2] [value3]

JSON 看起来像这样:

{
"info":[
{
"name":{
"first" : -----
"last":-----
},
"item": [
{
"item1" : "value1"
"item2" : "value2"
"item3" : "value3"
}
]
}

我使用了 Apache commons FileUtils.writeStringToFile,但是它将所有“项目”键和值写入一个单元格中,我需要 1 个项目到 1 个单元格。这个名字很好,因为组件可以放在一个单元格中,我只需要拆分项目即可。

到目前为止的结果是 Name 是一个 header ,该 header 下的单元格具有名字和姓氏,第二个 header 是 Items 并列出该单元格中该 json block 中的所有键和值。我希望项目键是标题和标题下的值,然后分开。

任何帮助或指导将不胜感激。

更新:为了澄清,我从 URL 中提取 JSON 数据,因此它的编写方式就是它的样子。我无法改变它。

最佳答案

public static void main(String[] args) throws IOException {
JSONObject jo = (JSONObject) JSONObject.parse("{\"info\":[{\"name\":{\"first\" : \"-----\",\"last\":\"-----\"},\"item\": [{\"item1\" : \"value1\",\"item2\" : \"value2\",\"item3\" : \"value3\"}]}]}");
String line1 = "headers:\tname\titem1\titem2\titem3\n";
String line2 = "data cells:";
JSONArray info = jo.getJSONArray("info");
JSONObject info1 = info.getJSONObject(0);
JSONObject name = info1.getJSONObject("name");
String nameKeys = name.keySet().toString();
JSONArray item = info1.getJSONArray("item");
JSONObject firstItem = item.getJSONObject(0);
String item1Value = firstItem.getString("item1");
String item2Value = firstItem.getString("item2");
String item3Value = firstItem.getString("item3");
line2 = line2 + "\t" +nameKeys + "\t"+ item1Value +"\t"+item2Value+"\t"+item3Value+"\n";
BufferedWriter bw = new BufferedWriter(new FileWriter("C:\\Users\\user\\Desktop\\test.csv"));
bw.write(line1);
bw.write(line2);
bw.close();

}

就像这样,获取值并将它们写入 csv 文件。另一种方法是使用正则表达式,如 (?<=item\d"\s:\s").*?(?=")匹配“value1”、“value2”、“value3”和正则表达式 item\d mathches "item1","item2","item3"截取json字符串来获取值。

关于java - 使用 JSON 数据组织 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56943093/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com