> 文档中心 > JSON.parseObject与JSONObject.parseObject的区别&JSONObject和JSONArray的区别

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 !!!