如何在Java对象中转换字符串数组JSON

如何在Java对象中转换字符串数组JSON,java,json,unmarshalling,Java,Json,Unmarshalling,我需要将此字符串JSON转换为Java对象: {"estabelecimento":[{"id":"5","idUsuario":"5","razaoSocial":"Bibi LTDA","nomeFantasia":"BibiPizza","telefone":"22121212","email":"ronaldo@bibi.com","gostaram":"0"},{"id":"8","idUsuario":"1","razaoSocial":"Nestor Latuf LTDA","no

我需要将此字符串JSON转换为Java对象:

{"estabelecimento":[{"id":"5","idUsuario":"5","razaoSocial":"Bibi LTDA","nomeFantasia":"BibiPizza","telefone":"22121212","email":"ronaldo@bibi.com","gostaram":"0"},{"id":"8","idUsuario":"1","razaoSocial":"Nestor Latuf LTDA","nomeFantasia":"Nestor Sorvetes","telefone":"32343233","email":"nestor@Sorvete.com","foto":"","gostaram":"0"},{"id":"9","idUsuario":"1","razaoSocial":"Comercio Alimenticio Rivaldo","nomeFantasia":"Rogers Burguer","telefone":"210021020","email":"roger@gmail.com","foto":"","gostaram":"0"}]}
我尝试过这个,但不起作用:

 //JSONArray jArr = new JSONArray(br.toString());  

        //JSONObject jObj = new JSONObject(br.toString());

        //JSONArray jArr = jObj.getJSONArray("list");

        JSONArray jArr = new JSONArray(br.toString());

        for (int i=0; i < jArr.length(); i++) {
            JSONObject obj = jArr.getJSONObject(i);
            estabelecimento.setId(obj.getLong("id"));
            estabelecimento.setIdUsuario(obj.getLong("idUsuario"));
            estabelecimento.setRazaoSocial(obj.getString("razaoSocial"));
            estabelecimento.setNomeFantasia(obj.getString("nomeFantasia"));
            estabelecimento.setTelefone(obj.getString("telefone"));
            estabelecimento.setEmail(obj.getString("email"));
            estabelecimento.setGostaram(obj.getInt("gostaram"));

            estabelecimentoList.add(estabelecimento);
        }
        con.disconnect();
//JSONArray jArr=newjsonarray(br.toString());
//JSONObject jObj=新的JSONObject(br.toString());
//JSONArray jArr=jObj.getJSONArray(“列表”);
JSONArray jArr=新的JSONArray(br.toString());
for(int i=0;i

如何获取Java对象?有人能帮忙吗?tks.

您可以使用谷歌的Gson库:

public class MyClass {

    private int data1 = 100;
    private String data2 = "hello";
    private List<String> list = new ArrayList<String>() {
      {
        add("String 1");
        add("String 2");
        add("String 3");
      }
    };

    //getter and setter methods needed


}


String str = {"data1":100,"data2":"hello","list":["String 1","String 2","String 3"]};
com.google.gson.Gson gson = new com.google.gson.Gson();

//To convert json string to class use fromJson
MyClass obj = gson.fromJson(str, MyClass .class);

//To convert class object to json string use toJson
String json = gson.toJson(obj);
公共类MyClass{
私有整数数据1=100;
私有字符串data2=“hello”;
私有列表=新的ArrayList(){
{
添加(“字符串1”);
添加(“字符串2”);
添加(“字符串3”);
}
};
//需要getter和setter方法
}
String str={“data1”:100,“data2”:“hello”,“list”:[“String 1”,“String 2”,“String 3”]};
com.google.gson.gson gson=new com.google.gson.gson();
//要将json字符串转换为类,请使用fromJson
MyClass obj=gson.fromJson(str,MyClass.class);
//要将类对象转换为json字符串,请使用toJson
字符串json=gson.toJson(obj);

在高层,主要有两个步骤:

  • 从JSON生成Java类,例如使用此生成器或类似工具:
  • 使用Jackson processor反序列化JSON文件:

     ObjectMapper mapper = new ObjectMapper();
     YourGeneratedClass obj = (YourGeneratedClass) mapper.readValue(new File("path-to-your-json-file"), YourGeneratedClass.class);
    
  • 更多关于杰克逊的信息:


    如果您对此感到满意,还可以手动创建GeneratedClass。

    您不需要说明使用了哪些JSON库以及在哪个操作系统下工作。另外,其他地方也发布了大量的例子,如果它是字符串,那么它已经是Java对象了。你想说得更具体些吗?是的,Gson会做你正在搜索的事情。在谷歌上查找Gson。谢谢你!但现在我有另一个问题:05-26 12:31:29.128:W/System.err(1514):org.json.JSONException:Value java.io。BufferedReader@40548f20无法将java.lang.String类型转换为JSONObject,我将在另一个问题中发布。tks!