当你要获取某个json字符串的某个值时 前台通过JSONP很容易通过Key方式直接获取 但是Java后台就有点麻烦 下面介绍 如何解析json字符串 例
{ "status": 0, "message": "ok", "result": [ { "source": "baidu", "location": { "lat": 34.15401365959694, "lng": 118.85774971753034 }, "bound": "33.891080,118.511530;34.428571,119.182754", "formatted_address": "江苏省宿迁市沭阳县", "address_components": { "province": "江苏省", "city": "宿迁市", "district": "沭阳县", "street": "", "level": "区县" }, "precise": 0.14 } ] }如上json我要获取县的名字 这是一个比较复杂的json字符串 直接通过district是获取不到沭阳县的 解决思路
笔者:这是一个比较简单的代码 其实也就是一层一层的获取我们想要的内容 获取过程中 注意我们的数据应该是 字符串还是 对象本身 所以慢慢写 不要着急 多注意观察数据结构 注:另一种就是分装对象 写三个对象然后依次分装 也可以获得但是代码量比较多。
第三种方法字符串正则解析 封装通用工具类
package com.ycl.Utils; import java.util.ArrayList; import java.util.regex.Matcher; import java.util.regex.Pattern; public class JSONUtil { /** * 返回json字符串中对应的值 * json json格式字符串 * s 要取的json键 * e 要取的json键的下一个键 */ public static ArrayList<String> getParamByRex(String json, String start, String end) { ArrayList<String> list = new ArrayList<>(); String regex=start + "\":(.*?),\"" + end; Matcher matcher=Pattern.compile(regex).matcher(json); while(matcher.find()) { String ret=matcher.group(1); list.add(ret); } return list; } public static void main(String[] args) { String json="[{\"id\":\"0\",\"name\":null,\"tankX\":200,\"tankK\":87,\"tankY\":200,\"blood\":100,\"attack\":10,\"killNum\":0},{\"id\":\"2\",\"name\":null,\"tankX\":320,\"tankK\":87,\"tankY\":320,\"blood\":100,\"attack\":10,\"killNum\":0}]"; ArrayList<String> list = JSONUtil.getParamByRex(json, "tankX", "tankK"); System.out.println(list.toString()); } }祝你幸福 送你一首歌《lifter》 Galen Crew 附图:连云港 连岛海滨浴场