【发布时间】:2016-08-28 08:07:35
【问题描述】:
我是 Java 新手,遇到一个不知道如何解决的问题。我阅读了一些教程,发布了问题等,但我仍然无法理解如何转移知识解决我的问题。
问题来了。
我想在一处读取多个 json 文件并将数据转换为字符串。我能够读取 json 中的一个数据条目,但不能读取更多。 :-|
文件数据如下:
{
"Header":{
"Liste1": {
"ID": "12345",
"Name" : "customerlist",
"Company List": [
"Company": "c1",
"Company": "c2",
"Company": "c3"
]
},
"Liste2":{
"ID": "12346",
"Name" : "vendorlist",
"Company List": [
"Company": "c4",
"Company": "c5",
"Company": "c6"
]
}
}
}
我使用 Main 的代码:
package testpaket;
import com.google.gson.Gson;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
public class test6 {
public static void main(String[] args) {
Gson gson = new Gson();
try (Reader reader = new FileReader("test.json")) {
// Convert JSON to Java Object
Header header = gson.fromJson(reader, Header.class);
System.out.println(header);
// Convert JSON to JsonElement, and later to String
/*JsonElement json = gson.fromJson(reader, JsonElement.class);
String jsonInString = gson.toJson(json);
System.out.println(jsonInString);*/
} catch (IOException e) {
e.printStackTrace();
}
}
}
我的列表类。
package testpaket;
import java.util.List;
public class Lists {
private String List;
private int ID;
private String Name;
private List<String> companyList;
}
我的 Header 类。
package testpaket;
import java.util.Map;
public class Header {
String name;
String list;
int id;
String header1;
private Map<String, Lists> header;
//getters&setters
public String getHeader() {
return this.header1;
}
public void setHeader(String header) {
this.header1 = header1;
}
public String getList() {
return this.list;
}
public void setList(String list) {
this.list = list;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public int getID() {
return this.id;
}
public void setID(int id) {
this.id = id;
}
}
这有任何意义吗?对不起,但我真的尝试过转移我迄今为止所拥有的知识。谁能帮助我并告诉我如何解决它?
【问题讨论】:
-
您希望字符串结构如何?
-
感谢 Rafael 的快速回复。我认为它需要为每一列分隔一个字符串,因为我想取消嵌套数据并将其插入数据库。
-
也许我应该在,我正在尝试为 Apache pig 构建一个 udf。有点像你在这里找到的link
-
@Iars,只是一个想法:如果要插入数据库,请不要转换为字符串。将您的 json 映射到
Header对象列表中,遍历所有对象并访问您要上传到数据库的属性。 -
@Alex,有趣的想法。我从未考虑过这一点,因为我不知道 Option 存在。 ^^ 叫我菜鸟。 :D