,,JSONObject使用方法详解

,,JSONObject使用方法详解

JSON-LIB包是一个将Beans、集合、映射、Java数组、xml和JSON相互转换的包。本文介绍了如何使用jsonobject的相关知识,让感兴趣的朋友一起学习一下。

1.JSONObject介绍

JSON-LIB包是Beans、集合、映射、Java数组、xml和JSON的包。

2.下载jar包

http://xiazai.jb51.net/201707/yuanma/lib_jb51.rar

除了JSONObject的jar之外,还有六个依赖于的jar包,总共有七个jar文件。

注:因为工作中项目使用的版本是jdk1.3对应1.1的版本,所以本博客是基于1.1版本介绍的。

该版本javadoc的下载路径如下:http://SourceForge . net/projects/JSON-lib/files/JSON-lib/JSON-lib-1.1/

最新版本是2.4,其他版本的下载地址是http://sourceforge.net/projects/json-lib/files/json-lib/.

3.项目环境:

系统:win 7 MyEclipse:6.5 Tomcat:5.0 JDK:1.5用于开发环境和编译。

项目结构如下:

注意:本次使用的文件只有项目目录JSON包下的jsonObject _ 1 _ 3类和note.txt。

4.classmethod 基于1.1的API

做以下几点约定:

1.介绍基于JSONObject 1.1的API。

2.只介绍常用的类和方法。

3.不再介绍了。在这个版本中不再推荐它。

4.介绍的类和方法主要集中在本博客中使用的那些。

JSON object:JSON object是名称/值对的无序集合。

是一个最终类,它继承Object并实现JSON接口。

构造方法如下:

JSON object();创建一个空JSONObject对象

JSON object(boolean is null);创建一个空JSONObject对象。

普通方法如下:

fromBean(对象bean);从pojo对象创建JSONObject对象的静态方法。

fromJSONObject(JSONObject对象);静态方法从另一个JSONObject对象构造一个JSONObject对象。

fromJSONString(JSONString字符串);通过JSONString创建JSONObject对象的静态方法。

toString();将jsonObject对象转换为JSON格式字符串

迭代器();返回一个迭代器对象来遍历元素。

接下来还有一些put/get方法,需要普通get方法和pot方法来强调。这在API中有描述:

如果能找到一个值,get方法就返回值,如果找不到,就抛出异常。opt方法返回默认值,而不是抛出异常,因此对于获取可选值非常有用。

JSON array:JSON array是有序的值序列。

是一个最终类,它继承Object并实现JSON接口。

构造方法如下:

JSON array();构造一个空的JSONArray对象

普通方法如下:

from array(Object[]array);从java数组创建JSONArray对象的静态方法。

fromCollection(集合集合);静态方法通过collection集合对象创建JSONArray对象。

fromString(字符串String);从JSON格式的字符串构造jsonArray对象的静态方法。

toString();将jsonArray对象转换为JSON格式字符串

迭代器();返回一个迭代器对象来遍历元素。

接下来是put/get方法.

XMLSerializer:用于将JSON转换为XML的实用程序类。

从对象继承的类

构造方法如下:

XML serializer();创建XMLSerializer对象

普通方法如下:

setRootName(字符串root name);设置转换后的xml的根元素名称。

setTypeHintsEnabled(布尔型hintsenabled);设置每个元素是否显示type属性。

写(JSON JSON);将json对象转换为xml,默认的字符编码是UTF-8,

可以使用write(JSON json,String encoding)来设置编码。

5.对XML和JSON字符串各列一个简单的例子

JSON:

{ '密码':' 123456 ','用户名':'张三' }

xml

?xml版本='1.0 '编码='UTF-8 '?

用户信息

密码123456/密码

用户名张三/用户名

/用户信息

start

创建一个新的web项目,项目名为JS,并导入以下七个jar包。文件是在前期准备工作中下载的。

注意:不需要新建web项目,普通java项目也可以完成本文中的操作。至于为什么要导入json包以外的6个包,我会在最后贴上note.txt,大家一目了然。

问题1:后台接收到的json格式字符串到前台应该怎么处理?

公共静态void jsonToJAVA() {

System.out.println('json字符串转Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)代码');

String jsonStr='{'password ':' username ':'张三'}';

JSON对象JSON obj=JSON对象。from string(JSON str);

字符串username=JSON obj。getstring(“用户名”);

字符串password=JSON obj。optstring(“password”);

系统。出去。println(' JSON-Java \ n用户名='用户名

\ t password=' password);

}

问题2:后台是怎么拼装json格式的字符串?

公共静态void javaToJSON() {

System.out.println('java代码封装为json字符串');

JSON object JSON obj=new JSON object();

jsonObj.put('username ','张三');

jsonObj.put('password ',' ');

系统。出去。println(' Java-JSON \ n ' JSON obj。tostring());

}

问题3:json格式的字符串怎么转换为可扩展标记语言格式的字符串?

公共静态void jsonToXML() {

System.out.println('json字符串转可扩展标记语言字符串');

String jsonStr='{'password ':' username ':'张三'}';

JSON对象JSON=JSON对象。from string(JSON str);

XML serializer XML serializer=new XML serializer();

XML序列化程序。setroot名称(“user _ info”);

XML序列化程序。settypehintsenabled(false);

字符串XML=XML序列化程序。写(JSON);

系统。出去。println(' JSON-XML \ n ' XML);

}

问题4:xml格式的字符串怎么转换为json格式的字符串?

公共静态void xmlToJSON(){

System.out.println('xml字符串转json字符串');

字符串xml='?可扩展标记语言版本='。编码='UTF-'?用户信息密码/密码用户名张三/用户名/用户信息;

JSON JSON=XML序列化程序。read(XML);

系统。出去。println(' XML-JSON \ n ' JSON。tostring());

}

问题5:javabean怎么转换为json字符串?

公共静态void javaBeanToJSON() {

System.out.println('javabean转json字符串');

UserInfo UserInfo=new UserInfo();

userInfo.setUsername('张三');

用户信息。设置密码(" ");

JSON对象JSON=JSON对象。来自bean(userInfo);

系统。出去。println(' JavaBean-JSON \ n ' JSON。tostring());

}

问题6:javabean怎么转换为可扩展标记语言字符串?

公共静态void javaBeanToXML() {

System.out.println('javabean转可扩展标记语言字符串');

UserInfo UserInfo=new UserInfo();

userInfo.setUsername('张三');

用户信息。设置密码(" ");

JSON对象JSON=JSON对象。来自bean(userInfo);

XML serializer XML serializer=new XML serializer();

字符串XML=XML序列化程序。写(JSON,' UTF-');

系统。出去。println(' JavaBean-XML \ n ' XML);

}

完整的JSONObject_1_3.java代码如下:

JSON对象_1_3

包json

导入网。SF。JSON。JSON

导入网。SF。JSON。JSON对象;

导入网。SF。JSON。XML。XML序列化程序;

公共类JSONObject__ {

公共静态void javaToJSON() {

System.out.println('java代码封装为json字符串');

JSON object JSON obj=new JSON object();

jsonObj.put('username ','张三');

jsonObj.put('password ',' ');

系统。出去。println(' Java-JSON \ n ' JSON obj。tostring());

}

公共静态void jsonToJAVA() {

System.out.println('json字符串转Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)代码');

String jsonStr='{'password ':' username ':'张三'}';

JSON对象JSON obj=JSON对象。from string(JSON str);

字符串username=JSON obj。getstring(“用户名”);

字符串password=JSON obj。optstring(“password”);

系统。出去。println(' JSON-Java \ n用户名='用户名

\ t password=' password);

}

公共静态void jsonToXML() {

System.out.println('json字符串转可扩展标记语言字符串');

String jsonStr='{'password ':' username ':'张三'}';

JSON对象JSON=JSON对象。from string(JSON str);

XML serializer XML serializer=new XML serializer();

XML序列化程序。setroot名称(' user _ info ');

XML序列化程序。settypehintsenabled(false);

字符串XML=XML序列化程序。写(JSON);

系统。出去。println(' JSON-XML \ n ' XML);

}

公共静态void javaBeanToJSON() {

System.out.println('javabean转json字符串');

UserInfo UserInfo=new UserInfo();

userInfo.setUsername('张三');

用户信息。设置密码(" ");

JSON对象JSON=JSON对象。来自bean(userInfo);

系统。出去。println(' JavaBean-JSON \ n ' JSON。tostring());

}

公共静态void javaBeanToXML() {

System.out.println('javabean转可扩展标记语言字符串');

UserInfo UserInfo=new UserInfo();

userInfo.setUsername('张三');

用户信息。设置密码(" ");

JSON对象JSON=JSON对象。来自bean(userInfo);

XML serializer XML serializer=new XML serializer();

字符串XML=XML序列化程序。写(JSON,' UTF-');

系统。出去。println(' JavaBean-XML \ n ' XML);

}

公共静态void xmlToJSON(){

System.out.println('xml字符串转json字符串');

字符串xml='?可扩展标记语言版本='。编码='UTF-'?用户信息密码/密码用户名张三/用户名/用户信息;

JSON JSON=XML序列化程序。read(XML);

系统。出去。println(' XML-JSON \ n ' JSON。tostring());

}

公共静态void main(String args[]) {

//Java to JSON();

//jsonToJAVA();

//jsonToXML();

//JavaBean to JSON();

//JavaBean to XML();

XML to JSON();

}

}

完整的UserInfo.java代码如下:

用户信息

包json

公共类用户信息{

公共字符串用户名;

公共字符串密码;

公共字符串getUsername() {

返回用户名;

}

公共void setUsername(字符串用户名){

this .用户名=用户名;

}

公共字符串getPassword() {

返回密码;

}

公共void setPassword(字符串密码){

this.password=密码;

}

}

result

代码和运行结果都已经贴在每个问题的后面,运行时直接用主要的方法分别对每个方法运行即可看到测试效果。

note.txt是报的对应的错误及解决方法,也从另一个方面说明为什么需要导入前面提到的冲突包;

note.txt文件内容如下:

Java。郎。noclassdeffounderror:org/Apache/commons/lang/exception/NestableRuntimeException

位于Java。郎。类别载入器。定义类别0(本地方法)

位于Java。郎。类别载入器。定义类(类加载器。Java:537)

位于Java。安全。安全类加载器。定义类(安全类加载器。Java:123)

位于Java。网。URL类加载器。定义类(URL类加载器。Java:251)

在Java。网。URL类加载器。访问100美元(URLClassLoader.java:55)

位于Java。网。URL类加载器$1。运行(URL类加载器。Java:194)

在爪哇。安全。门禁控制器。特权(原生方法)

位于Java。网。URL类加载器。查找类(URL类加载器。Java:187)

位于Java。郎。类别载入器。加载类(类加载器。Java:289)

看着孙。杂项启动器$应用程序类加载器。加载类(启动器。Java:274)

位于Java。郎。类别载入器。加载类(类加载器。Java:235)

位于Java。郎。类别载入器。loadclassinternal(类加载器。Java:302)

在生成时testjsonobject。main(testjsonobject。Java:40)

线程"主要"中出现异常

解决方案:导入commons-lang-2.1.jar

Java。郎。noclassdeffounderror:org/Apache/commons/logging/log factory

在网上。SF。JSON。JSON对象。clinit(JSON对象。Java:125)

在生成时testjsonobject。main(testjsonobject。Java:40)

线程"主要"中出现异常

解决方案:导入commons-logging.jar

Java。郎。noclassdeffounderror:org/Apache/commons/bean utils/dyna bean

在网上。SF。JSON。JSON对象。set(JSON对象。Java:2164)

在网上。SF。JSON。JSON对象。put(JSON对象。爪哇:1853年)

在网上。SF。JSON。JSON对象。put(JSON对象。Java:1806年)

在生成时testjsonobject。main(testjsonobject。Java:41)

线程"主要"中出现异常

解决方案:导入commons-beanutils.jar

Java。郎。noclassdeffounderror:net/SF/ez morph/MorpherRegistry

在网上。SF。JSON。util。jsonutils。clinit(jsonutils。Java:65)

在网上。SF。JSON。JSON对象。set(JSON对象。Java:2164)

在网上。SF。JSON。JSON对象。put(JSON对象。爪哇:1853年)

在网上。SF。JSON。JSON对象。put(JSON对象。Java:1806年)

在生成时testjsonobject。main(testjsonobject。Java:41)

线程"主要"中出现异常

解决方案:导入ezmorph-1.0.2.jar

Java。郎。noclassdeffounderror:org/Apache/commons/collections/fast hashmap

位于org。阿帕奇。公地。豆制品。财产效用。clinit(属性实用工具。Java:208)

在网上。SF。JSON。JSON对象。来自bean(JSON对象。Java:190)

在网上。SF。JSON。JSON对象。from对象(JSON对象。Java:437)

在网上。SF。JSON。JSON对象。set(JSON对象。Java:2196)

在网上。SF。JSON。JSON对象。put(JSON对象。爪哇:1853年)

在网上。SF。JSON。JSON对象。put(JSON对象。Java:1806年)

在生成时testjsonobject。main(testjsonobject。Java:41)

线程"主要"中出现异常

解决方案:导入commons-collections-3.0.jar

线程“主”Java。郎。noclassdeffounderror中出现异常:nu/XOM/串行器

在生成时testjsonobject。jsontoxml(testjsonobject。Java:88)

在生成时。testjsonobject . main(testjsonobject . Java:96)

解决方案:导入xom-1.0d10.jar

几点说明:

1.注意UserInfo类的修饰符,用public修饰,变量username和password也用public修饰。最好单独写一个类,这里就不贴了。

2.上面的json字符串和xml字符串是最简单的形式。在实际开发中,json字符串和xml格式要比这复杂得多。

要处理复杂的json字符串,可以封装并编写一个继承HashMap的类,然后重写它的put和get方法,以支持读取和指定A[0]类型的键值。b和A.B

3.以上6种情况,有些可能不存在,或者在实际开发中不常用。

存在的问题:

1.xmlSerializer的write方法生成的XML字符串的中文乱码。

2.问题4中的红色日志日志问题

以上是边肖介绍的JSONObject用法的详细说明。我希望你喜欢它。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: