JSON.parseObject与JSONObject.parseObject的区别&JSONObject和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 !!!

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值