java - 解析动态 json

标签 java json jackson

我有 json,我正在尝试使用 Jackson 解析它。 JSON 看起来像 -

coupons: {
  1: {
     title: "Mode von",
     description: "",
     type: "offer",
     code: "-",
     expiry: "0000-00-00",
     link: ""
  },    
  2: {
     title: "Prime 1",
     description: "",
     type: "offer",
     code: "-",
     expiry: "0000-00-00",
     link: "http://test.com/"
  }
}

这里的优惠券数量并不是恒定的,并且会根据响应的不同而有所不同。 我的困境是创建相应的java类来保存这样的对象。

我尝试将 map 用作 -

public class Coupons {
   Map<String, String>coupons = new HashMap<String, String>();
   public Map<String, String> getCoupons() {
      return coupons;
   }
}

但是-

System.out.println(coupons.getCoupons().get("type"));
System.out.println(coupons.getCoupons().get("code"));

总是让我为空。对于这个 json 来说,什么是正确的 java 类?

最佳答案

您的第一级键是索引号 1、2、3 等。 因此,为了获取类型和代码,您必须指定 key 。

你可以这样做:

var coupons = coupons.getCoupons(); //<--breakpoint to see if this is really populated.
foreach( String key in coupons.Keys ){ //<- pseudo code, iterate over keys  
  var obj = coupons.get(key);
  var type = obj.get("type");
  etc..
}

希望这可以帮助您继续前进

关于java - 解析动态 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10161559/

相关文章:

java - 从 java 程序中的 hive2 json-serde 表中获取数据时出现异常

java - 方法级变量范围

Javascript - 从 json 响应中提取 html 元素

java - Android JSON 解析(Jackson)

java - 不匹配的输入异常 : Cannot deserialize instance of `java.lang.Integer` out of START_OBJECT token

java - 通过 Selenium 删除 cookie

java - 在动态线程号中调用 ExecutorService.shutdown

javascript - 如何将 datepicker 日期转换为 JSON 对象以在 AJAX 请求中使用

json - 使用 swift 4 从服务器加载数据

java - @JsonProperty 没有申请 BeanWrapper