我需要一些关于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"));
答案 0 :(得分:2)
使用Google 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);
答案 1 :(得分:0)
在每个setCode(字符串x),setName(字符串x),setPointer(字符串x),setPrice(字符串x)...中给出一个检查: if(x == null) 返回;
然后在解析Json时你不必检查Json的响应是否具有哪个键。