我是Java的新手,有一个我不知道如何修复的问题。我阅读了一些教程,发布了问题等但我仍然无法理解如何转移知识修复我的问题。
这里有问题。
我想在一个地方读取多个json文件并将数据转换为字符串。我能够在json中读取一个数据条目,但不能更多。 : - |
文件数据如下所示:
git filter-branch --tag-name-filter cat -- <parent sha>..head
我使用的代码Main:
{
"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"
]
}
}
}
我的名单课。
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;
}
这些都有意义吗?对不起,但我真的试过转移到目前为止的知识。谁能帮助我并告诉我如何解决它?
答案 0 :(得分:5)
如果要将JSON文件转换为字符串,则无需将文件转换为Java Object,然后转换为String。使用apache commons-io库,您可以只使用 1行。
String exampleRequest = FileUtils.readFileToString(new File("exampleJsonRequest.json"), StandardCharsets.UTF_8);
答案 1 :(得分:1)
首先,对象与json不匹配。 Header对象应包含两个字段,如Liste1和Liste2(可能是相同类型)。另一方面,这些应包含id,name和companyList字段。 另外,你创建了json吗? Liste1和Liste2可能应该是json中集合的一部分,在“[]”括号内,然后不是像Liste1和Liste2这样的两个字段,你可以在Header对象中有Collection。
答案 2 :(得分:1)
这是使用GSON的完整解决方案:
package jsonProcessing;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class GsonHeader {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader reader = null;
try{
reader = new BufferedReader(new FileReader("C:/JSON/header.json"));
Gson gson = new GsonBuilder().create();
HeaderResult results = gson.fromJson(reader, HeaderResult.class);
if(results != null){
for(Header h : results.getHeader()){
String temp =("ID: "+h.getID()+" Name: "+h.getName());
for(CompanyList cl : h.getCompanyList()){
System.out.println(temp+" "+"Company: "+cl.getCompany());
}
}
}
}catch(Exception e){
e.printStackTrace();
}finally{
if(reader != null){
try{
reader.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
}
}
package jsonProcessing;
import java.util.List;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class HeaderResult {
@SerializedName("Header")
@Expose
private List<Header> header = null;
public List<Header> getHeader() {
return header;
}
public void setHeader(List<Header> header) {
this.header = header;
}
}
package jsonProcessing;
import java.util.List;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class Header {
@SerializedName("ID")
@Expose
private String iD;
@SerializedName("Name")
@Expose
private String name;
@SerializedName("Company List")
@Expose
private List<CompanyList> companyList = null;
public String getID() {
return iD;
}
public void setID(String iD) {
this.iD = iD;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<CompanyList> getCompanyList() {
return companyList;
}
public void setCompanyList(List<CompanyList> companyList) {
this.companyList = companyList;
}
}
package jsonProcessing;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class CompanyList {
@SerializedName("Company")
@Expose
private String company;
public String getCompany() {
return company;
}
public void setCompany(String company) {
this.company = company;
}
}
最后输出:
ID: 12345 Name: customerlist Company: c1
ID: 12346 Name: vendorlist Company: c6