JSON看这个
文章目录
JSON转换
1、JSONObject与JSON的区别
JSONObject是JSON的子类。JSON是一个抽象类,JSON中有一个静态方法parseObject(String text),将text解析为一个JSONObject对象并返回;JSONObject是一个继承自JSON的类,当调用JSONObject.parseObject(result)时,会直接调用父类的parseObject(String text)。所以两者没什么区别,一个是用父类去调用父类自己的静态的parseObject(String text),一个是用子类去调用父类的静态parseObject(String text),两者调的是同一个方法。
parseObject()和parse()的区别
类型不同:parse方法返回基本数据类型,如int、double等;而parseObject方法返回包装类类型,如Integer、Double等。
异常处理:当parse方法无法解析输入的字符串时,会抛出NumberFormatException异常;而parseObject方法不会抛出异常,而是返回一个null值。
2、通过HttpservletRequest接收json数据
public String intercept(ActionInvocation invocation) throws Exception {
HttpServletRequest request = ServletActionContext.getRequest();
接收json数据
BufferedReader streamReader = new BufferedReader( new
InputStreamReader(request.getInputStream(), "UTF-8"));
StringBuilder responseStrBuilder = new StringBuilder();
String inputStr;
while ((inputStr = streamReader.readLine()) != null)
responseStrBuilder.append(inputStr);
转化成json对象
JSONObject jsonObject = JSONObject.fromObject(responseStrBuilder.toString());
获取其中的对象
JSONObject commonRequest=jsonObject.getJSONObject("commonRequest");
获取对象中的字段
String accessKey=commonRequest.getString("accessKey");
获取其中的list数据
List custList=(List) jsonObject.get("custList");
获取的是字符串
String couponGroupId=jsonObject.getString("couponGroupId");
}
这是传的json数据
{
"commonRequest": {
"accessKey": "1",
"tradeNo": "00010",
"tradeTime": "111111111",
"tradeMask": "7DC506B55F91677BE93A477D6EFF6C87"
},
"couponGroupId": "11",
"custList": [
{
"mobile": "15049995864",
"name": "zzz",
"gender": "1",
"birthday": "2019-07-04",
"address": "zzzzzz",
"areaCode": "1"
}
]
}
3、获取JSON数组中指定索引位置上的元素
JSONObject jsonObj = jsonArray.getJSONObject(0);
4、Java对象–>JSON对象
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(stu);
5、JSON对象–>JSON字符串
String jsonString = jsonObject.toJSONString();
6、JSON字符串–>JSON对象 (常用)
注意导入不同jar包,解析方法不一样
JSONObject jsonObject1 = JSONObject.parseObject(stuString);
JSONObject billjson = new JSONObject().fromObject(sendjson);
7、JSON对象转换成Java对象
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(stu);
//JSON对象转换成Java对象
Student student = JSONObject.toJavaObject(jsonObject, Student.class);
8、JSON字符串转换成Java对象
Student student1 = JSONObject.parseObject(stuString, Student.class);
9、JSONArray对象–>JSONArray字符串–>List
//初始化JSONArray对象
JSONArray jsonArray = JSONArray.parseArray("[{\"name\":\"zhangsan\",\"age\":18},{\"name\":\"lisi\",\"age\":23}]");
//转字符串,再转List
List<Body> list = JSONArray.parseArray(jsonArray.toJSONString(), Body.class);
10、JSONArray字符串–>JSONArray数组对象(遍历)–>JSON对象
String s = "[{\"id\":\"17051801\",\"name\":\"lucy\"},{\"id\":\"17051802\",\"name\":\"peter\"}]";
//数组 --> json数组
JSONArray array = JSONObject.parseArray(s);
for (int i = 0; i < array.size(); i++) {
//JSONArray中的数据转换为String类型需要在外边加"";不然会报出类型强转异常!
String str = array.get(i)+"";
JSONObject object = JSON.parseObject(str);