JSON.parseObject与JSONObject.parseObject的区别&JSONObject和JSONArray的区别
JSON.parseObject与JSONObject.parseObject的区别&JSONObject和JSONArray的区别
- JSON.parseObject与JSONObject.parseObject的区别&JSONObject和JSONArray的区别
-
- 1.JSON和JSONObject
-
- 总结 两者调用parseObject方法是同一个方法。不存在区别
- 2.parseObject方法怎样使用
- 3.使用JSON需要导的依赖
- 问题来了,项目中前端传一个json我们知道怎样接收了,那传多个json怎样接收?
-
- 1.首先看一下JSONObject和JSONArray的区别
- 2.怎样获取JSONArray里面的数据
JSON.parseObject与JSONObject.parseObject的区别&JSONObject和JSONArray的区别
1.JSON和JSONObject
先看一下源码
JSON源码
public abstract class JSON implements JSONStreamAware, JSONAware {public static JSONObject parseObject(String text) { Object obj = parse(text); if (obj instanceof JSONObject) { return (JSONObject)obj; } else { try { return (JSONObject)toJSON(obj); } catch (RuntimeException var3) { throw new JSONException("can not cast to JSONObject.", var3); } } }}
JSONObject源码
public class JSONObject extends JSON implements Map<String, Object>, Cloneable, Serializable, InvocationHandler {public static JSONObject parseObject(String text) { Object obj = parse(text); if (obj instanceof JSONObject) { return (JSONObject)obj; } else { try { return (JSONObject)toJSON(obj); } catch (RuntimeException var3) { throw new JSONException("can not cast to JSONObject.", var3); } } }}
可以看出来JSONObject是继承JSON的,会直接调用父类的parseObject(String text)方法。
总结 两者调用parseObject方法是同一个方法。不存在区别
2.parseObject方法怎样使用
JSON.parseObject(String str)是将str转化为相应的JSONObject对象,其中str是“键值对”形式的json字符串,转化为JSONObject对象之后就可以使用其内置的方法,进行各种处理了。
示例:
public test(String json) { //传json字符串 //JSON.parseObject(String str)是将str转化为相应的JSONObject对象, //其中str是“键值对”形式的json字符串,转化为JSONObject对象之后就可以使用其内置的方法,进行各种处理了。 JSONObject object = JSONObject.parseObject(json); //做判空 if(object .get("id")!=null){ //这样就可以获取到json里面的数据 String pid = object .get("id").toString(); } if(object .get("key")!=null){ String key= object .get("key").toString(); } if(object .get("c")!=null){ String c= object .get("c").toString(); }}
3.使用JSON需要导的依赖
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> </dependency>
问题来了,项目中前端传一个json我们知道怎样接收了,那传多个json怎样接收?
1.首先看一下JSONObject和JSONArray的区别
JSONObject的数据是用{ }框起来的,相当于一个json 举例:
{ "id" : "123", "name" : "meng", "age" : "16", "address" : "北京"}
JSONArray的数据最外面是[ ] 框起来的,里面可以包括多个json。 举例:
[{ "id" : "123", "name" : "meng", "age" : "16", "address" : "北京"},{ "id" : "456", "name" : "wang", "age" : "18", "address" : "保定"}]
这相当于里面包含了两个json数据
2.怎样获取JSONArray里面的数据
就按这个举例子:
String tpsjson =[{ "id" : "123", "name" : "meng", "age" : "16", "address" : "北京"},{ "id" : "456", "name" : "wang", "age" : "18", "address" : "保定"}]
开始获取里面的数据
//通过迭代器的方式,获取多个json数据JSONArray tpsList = JSON.parseArray(tpsjson);//3.使用listIterator迭代器来便利数组ListIterator<Object> tpsiterator = tpsList.listIterator();//4.tpsiterator.hasNext():判断集合后面是否还有元素while (tpsiterator.hasNext()){ //5.转换成Object格式 JSONObject tpsjsonObject = JSON.parseObject(tpsiterator.next().toString()); //6.判断object是否为空,再进行下列操作。 if(tpsjsonObject.get("id")!=null){ String pid = tpsjsonObject.get("id").toString(); } if(tpsjsonObject.get("name")!=null){ String pid = tpsjsonObject.get("name").toString(); } if(tpsjsonObject.get("age")!=null){ String pid = tpsjsonObject.get("age").toString(); } if(tpsjsonObject.get("address")!=null){ String pid = tpsjsonObject.get("address").toString(); }}
这样怎样处理前端传来json数据就解决啦!
通过工作上发现的问题,自己整理出来,希望可以帮助到大家!
+我qq:503213711 备注好,邀你进入后端交流群。欢迎大家 come on !!!