gpt4 book ai didi

java - 将 JSON 字符串解析为 List 的文本文件

转载 作者:行者123 更新时间:2023-12-01 09:35:21 25 4
gpt4 key购买 nike

我有一个包含以下 JSON 字符串的 txt 文件:

{"id":1,"data":"abc"}
{"id":2,"data":"rbc"}
{"id":3,"data":"gbc"}

我按如下方式阅读此文件:

    File f = new File("src/test/resources/jsons.txt");
if (f.exists()){
InputStream is = new FileInputStream("src/test/resources/jsons.txt");
data = IOUtils.toString(is);
}

现在我想将此文件的内容解析为 List<MyDataEntry> 。这是类 MyDataEntry 的片段代码.

如何正确提取每个单独的 JSON 字符串并将其发送到 MyDataEntry 的构造函数?有没有更有效的方法来做到这一点?

class MyDataEntry {
private String id;
private String data;

public MyDataEntry(String rawDataEntry)
{
parse(rawDataEntry);
}

private parse(String rawDataEntry)
{
JSONObject rd = new JSONObject(rawDataEntry);
if(rd.has("id")){
id = data.getString("id");
}
if(rd.has("data")){
data = data.getString("data");
}
}

}

最佳答案

不要重新发明轮子。您可以使用 Jackson JSON库可以为您做到这一点;)

示例:

首先,您需要重构 JSON(如果您没有该文件的写入权限,请逐行读取它并构建您自己的 JSON 结构):

{
"allData":[
{"id":"123", "data":"some data"},
...
]
}

MyDataWrapper.java

@JsonIgnoreProperties(ignoreUnknown = true)
public class MyDataWrapper {
@JsonProperty("allData")
public List<MyData> allData;
}

MyData.java

@JsonIgnoreProperties(ignoreUnknown = true)
public class MyData {

@JsonProperty("id")
public int id;

@JsonProperty("data")
public String data;
}

解析文件:

try {
ObjectMapper mapper = new ObjectMapper();
InputStream file = getClass().getResourceAsStream("MY_FILE.txt");
MyDataWrapper myDataWrapper = mapper.readValue(file, MyDataWrapper.class);
} catch (IOException e) {
e.printStackTrace();
}

编辑

从字符串解析:

Staff obj = mapper.readValue(jsonInString, MyDataWrapper.class);

引用:https://www.mkyong.com/java/jackson-2-convert-java-object-to-from-json/

关于java - 将 JSON 字符串解析为 List<Data Entry> 的文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39018175/

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