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