有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在每个Json字符串中返回不同的变量时有效地将Json解析为对象

我需要一些关于Java中JSON解析的建议。对于一些实时更新,我得到如下JSON响应(服务器只返回具有新值的变量):

{"33":"7153", "170":"AA","151":10}
{"33":"7153","rate":0.5488,"45":"U05"}
{"33":"7153", "98":7.38,"132":583}

你知道我该如何高效地编写一个解析器来将它们解析为对象,而不是每次都这样做吗

String str = "{\"33\":\"7153\", \"170\":\"AA\",\"151\":10}";
JSONObject json = new JSONObject(str);
Product s = new Product();

if (json.has("33")) s.setCode(json.getString("33"));
if (json.has("170")) s.setName(json.getString("170"));
if (json.has("151")) s.setPointer(json.getString("151"));
if (json.has("98")) s.setPrice(json.getString("98"));
if (json.has("rate")) s.setRate(json.getString("rate"));
if (json.has("132")) s.setValue(json.getString("132"));
if (json.has("45")) s.setDescription(json.getString("45"));

共 (2) 个答案

  1. # 1 楼答案

    使用谷歌Gson

    public class Product {
        @SerializedName("33") private String code;
        @SerializedName("170") private String name;
        @SerializedName("151") private String pointer;
        @SerializedName("98") private String price;
        @SerializedName("rate") private String rate;
        @SerializedName("132") private String value;
        @SerializedName("45") private String description;
        // setters, getters
    }
    

        String str = "{\"33\":\"7153\", \"170\":\"AA\",\"151\":10}";
        Gson gson = new Gson();
        Product s = gson.fromJson(str, Product.class);
    
  2. # 2 楼答案

    在每个setCode(字符串x)、setName(字符串x)、setPointer(字符串x)、setPrice(字符串x)中。。。检查一下: 如果(x==null) 回归

    然后,在解析Json时,不必检查Json的响应是否有键