JSON.parseObject(String str)与JSONObject.parseObject(String str)的区别
1.JSON和JSONObject
根据源码显示:JSON是一个抽象类,JSON中有一个静态方法parseObject(String text),将text解析为一个JSONObject对象并返回;
JSONObject是一个继承自JSON的类,当调用JSONObject.parseObject(result)时,会直接调用父类的parseObject(String text)。
所以两者没什么区别,一个是用父类去调用父类自己的静态的parseObject(String text),一个是用子类去调用父类的静态parseObject(String text),两者调的是同一个方法。
2.parseObject(String str)的作用
JSON.parseObject(String str)是将str转化为相应的JSONObject对象,其中str是“键值对”形式的json字符串,转化为JSONObject对象之后就可以使用其内置的方法,进行各种处理了。
public AlipayConfig(String payParam) {
//判断传入的payParam值是否为空,为空则直接抛出异常,
//该函数的意思是传入的object必须不能为空。如果为空就抛出异常。
Assert.notNull(payParam, "init AllinpayConfig config error");
//JSON.parseObject(String str)是将str转化为相应的JSONObject对象,
//其中str是“键值对”形式的json字符串,转化为JSONObject对象之后就可以使用其内置的方法,进行各种处理了。
JSONObject object = JSONObject.parseObject(payParam);
this.appId = object.getString("appid");
this.key = object.getString("key");
this.c = object.getString("c");
}
3.fastjson依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
为什么要说fastjson,因为,JSON.parseObject(String str)和JSONObject.parseObject(String str)就是fastjson中的方法。
JSONObject和JSONArray的区别
1.JSONObject和JSONArray的数据表示形式
JSONObject的数据是用 { } 来表示的,例如:
{ "id" : "123", "courseID" : "huangt-test", "title" : "提交作业", "content" : null }
而JSONArray,顾名思义是由JSONObject构成的数组,用 [ { } , { } , … , { } ] 来表示。 例如:
[ { "id" : "123", "courseID" : "huangt-test", "title" : "提交作业" } ,
{ "content" : null, "beginTime" : 1398873600000 "endTime" } ] ;
表示了包含2个JSONObject的JSONArray。
可以看到一个很明显的区别,一个用的是 { } ,一个最外面用的是 [ ] ;
2.如何从字符串String获得JSONObject对象和JSONArray对象
JSONObject jsonObject = new JSONObject ( String str);
JSONArray jsonArray = new JSONArray(String str ) ;
3.如何从JSONArray中获得JSONObject对象
大家可以把JSONArray当成一般的数组来对待,只是获取的数据内数据的方法不一样。
JSONObject jsonObject = (JSONObject)jsonArray.get(i);
JSONObject jsonObject = jsonArray.getJSONObject(i) ;
两者都可。第一种注意转换
4.获取JSON内的数据
int jid = jsonObject.getInt ( "id" ) ; // 这里的jid得到的数据就是123.
String jcourse = jsonObject.getString( " courseID") ; // 这里的jcourse得到的数据就是huangt-test.
Strirng jcourse = jsonObject.get("courseID").toString();
5.一般地 为键值对
eg:{ name:"xm", value:"张三"}
String jname = null;
if(jsonObject.get("name").equals("xm")){
jname=jsonObject.get("value").toString();
}
6.转换
JSON.parse( str ) --> 把字符串转为JSON对象
JSON.stringify( obj ) --> 把对象解析为字符串
(参考博文:
https://blog.csdn.net/chen3888015/article/details/102886468)