Java: 处理Json格式的字符串

目录

处理Json格式的字符串

查看变量的类型

java.lang.Integer cannot be cast to java.lang.Long异常


处理Json格式的字符串

涉及到的包:

import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSONArray;
@Test
public void jsonTest() {
  String json =
      "{\"type\":\"page\",\"body\":[{\"type\":\"form\",\"title\":\"表单\",\"body\":[{\"label\":\"姓名\",\"type\":\"input-text\",\"name\":\"username\",\"id\":\"u:944f7077db66\"},{\"type\":\"input-text\",\"label\":\"家庭地址\",\"name\":\"address\",\"id\":\"u:74671ce2139b\"}],\"id\":\"u:88cd5fb1e72d\",\"api\":{\"url\":\"http://127.0.0.1:8099/common/modelPageTest8/appConfig/15/add\",\"method\":\"post\"},\"autoFocus\":true}]}";
  JSONObject jsonObject = JSONObject.parseObject(json);
  String type = jsonObject.getString("type");
  System.out.println("type=" + type);
  JSONArray bodies = jsonObject.getJSONArray("body");
  for (Object body : bodies) {
    JSONObject bodyJson = (JSONObject) body;
    String title = bodyJson.getString("title");
    System.out.println(title);
    JSONArray bodiesInner = bodyJson.getJSONArray("body");
    for (Object o : bodiesInner) {
      JSONObject innerJson = (JSONObject) o;
      String label = innerJson.getString("label");
      String name = innerJson.getString("name");
      System.out.println("label=" + label + ",name=" + name);
    }
  }
}

查看变量的类型

body.getClass().toString()

java.lang.Integer cannot be cast to java.lang.Long异常

Integer类型转Long类型: Long.valueOf(body.toString())

例子:

String json ="{\n" +
            "  \"appId\": 121,\n" +
            "  \"conditions\": \"{\\\"type\\\":\\\"page\\\",\\\"body\\\":[{\\\"type\\\":\\\"form\\\",\\\"title\\\":\\\"表单\\\",\\\"body\\\":[{\\\"label\\\":\\\"姓名\\\",\\\"type\\\":\\\"input-text\\\",\\\"name\\\":\\\"username\\\",\\\"id\\\":\\\"u:944f7077db66\\\"},{\\\"type\\\":\\\"input-text\\\",\\\"label\\\":\\\"家庭地址\\\",\\\"name\\\":\\\"address\\\",\\\"id\\\":\\\"u:74671ce2139b\\\"}],\\\"id\\\":\\\"u:88cd5fb1e72d\\\",\\\"api\\\":{\\\"url\\\":\\\"http://127.0.0.1:8099/common/modelPageTest8/appConfig/15/add\\\",\\\"method\\\":\\\"post\\\"},\\\"autoFocus\\\":true}]}\",\n" +
            "  \"modelIds\": [154, 124],\n" +
            "  \"ruleName\": \"测试规则\",\n" +
            "  \"ruleType\": \"globalRule\",\n" +
            "  \"status\": false\n" +
            "}";    
    

    JSONObject jsonObject = JSONObject.parseObject(json);
    JSONArray bodies = jsonObject.getJSONArray("modelIds");
    String modelIds = jsonObject.getString("modelIds");
    for (Object body : bodies) {
      JSONObject bodyJson = (JSONObject) body;
      // 查看body的类型
      System.out.println(body.getClass().toString());
      List<Long> a = new LinkedList<>();
      a.add(154l);
      a.add(122l);
      // 强制Integer类型转为Long类型
      Long b = Long.valueOf(body.toString());
      // 判断List里是否含有某元素
      if (a.contains(b)) System.out.println("ojbk");
      // 判断两数值是否相等(==涉及到判断地址,可能会出错)
      if (a.equals(b)) System.out.println("okk");
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值