将 JSON 文件转换为字符串

新手上路,请多包涵

我是 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;

}

我的标题类。

 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;
        }
}

这些都有意义吗?抱歉,但我真的尝试过转移我目前所掌握的知识。任何人都可以帮助我并告诉我如何解决它吗?

原文由 lars 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 687
2 个回答

如果要将 JSON 文件转换为字符串,则无需先将文件转换为 Java 对象再转换为字符串。使用 apache commons-io 库,您 只需 1 行即可完成此操作。

 String exampleRequest = FileUtils.readFileToString(new File("exampleJsonRequest.json"), StandardCharsets.UTF_8);

原文由 salvatore rinaudo 发布,翻译遵循 CC BY-SA 4.0 许可协议

这是使用 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

原文由 lars 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题