- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章FastJson对于JSON格式字符串、JSON对象及JavaBean之间的相互转换操作由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
fastjson对于json格式字符串的解析主要用到了一下三个类:
json:fastjson的解析器,用于json格式字符串与json对象及javabean之间的转换.
jsonobject:fastjson提供的json对象.
jsonarray:fastjson提供json数组对象.
我们可以把jsonobject当成一个map<string,object>来看,只是jsonobject提供了更为丰富便捷的方法,方便我们对于对象属性的操作。我们看一下源码.
同样我们可以把jsonarray当做一个list<object>,可以把jsonarray看成jsonobject对象的一个集合.
此外,由于jsonobject和jsonarray继承了json,所以说也可以直接使用两者对json格式字符串与json对象及javabean之间做转换,不过为了避免混淆我们还是使用json.
首先定义三个json格式的字符串,作为我们的数据源.
1
2
3
4
5
6
|
//json字符串-简单对象型
private
static
final
string json_obj_str =
"{\"studentname\":\"lily\",\"studentage\":12}"
;
//json字符串-数组类型
private
static
final
string json_array_str =
"[{\"studentname\":\"lily\",\"studentage\":12},{\"studentname\":\"lucy\",\"studentage\":15}]"
;
//复杂格式json字符串
private
static
final
string complex_json_str =
"{\"teachername\":\"crystall\",\"teacherage\":27,\"course\":{\"coursename\":\"english\",\"code\":1270},\"students\":[{\"studentname\":\"lily\",\"studentage\":12},{\"studentname\":\"lucy\",\"studentage\":15}]}"
;
|
示例1:json格式字符串与json对象之间的转换.
示例1.1-json字符串-简单对象型与jsonobject之间的转换 。
1
2
3
4
5
6
7
8
|
/**
* json字符串-简单对象型与jsonobject之间的转换
*/
public
static
void
testjsonstrtojsonobject(){
jsonobject jsonobject = json.parseobject(json_obj_str);
//jsonobject jsonobject1 = jsonobject.parseobject(json_obj_str); //因为jsonobject继承了json,所以这样也是可以的
system.out.println(jsonobject.getstring(
"studentname"
)+
":"
+jsonobject.getinteger(
"studentage"
));
}
|
示例1.2-json字符串-数组类型与jsonarray之间的转换 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
/**
* json字符串-数组类型与jsonarray之间的转换
*/
public
static
void
testjsonstrtojsonarray(){
jsonarray jsonarray = json.parsearray(json_array_str);
//jsonarray jsonarray1 = jsonarray.parsearray(json_array_str);//因为jsonarray继承了json,所以这样也是可以的
//遍历方式1
int
size = jsonarray.size();
for
(
int
i =
0
; i < size; i++){
jsonobject jsonobject = jsonarray.getjsonobject(i);
system.out.println(jsonobject.getstring(
"studentname"
)+
":"
+jsonobject.getinteger(
"studentage"
));
}
//遍历方式2
for
(object obj : jsonarray) {
jsonobject jsonobject = (jsonobject) obj;
system.out.println(jsonobject.getstring(
"studentname"
)+
":"
+jsonobject.getinteger(
"studentage"
));
}
}
|
示例1.3-复杂json格式字符串与jsonobject之间的转换 。
1
2
3
4
5
6
7
8
9
10
11
|
/**
* 复杂json格式字符串与jsonobject之间的转换
*/
public
static
void
testcomplexjsonstrtojsonobject(){
jsonobject jsonobject = json.parseobject(complex_json_str);
//jsonobject jsonobject1 = jsonobject.parseobject(complex_json_str);//因为jsonobject继承了json,所以这样也是可以的
string teachername = jsonobject.getstring(
"teachername"
);
integer teacherage = jsonobject.getinteger(
"teacherage"
);
jsonobject course = jsonobject.getjsonobject(
"course"
);
jsonarray students = jsonobject.getjsonarray(
"students"
);
}
|
示例2:json格式字符串与javabean之间的转换.
首先,我们针对数据源所示的字符串,提供三个javabean.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
public
class
student {
private
string studentname;
private
integer studentage;
public
string getstudentname() {
return
studentname;
}
public
void
setstudentname(string studentname) {
this
.studentname = studentname;
}
public
integer getstudentage() {
return
studentage;
}
public
void
setstudentage(integer studentage) {
this
.studentage = studentage;
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
public
class
course {
private
string coursename;
private
integer code;
public
string getcoursename() {
return
coursename;
}
public
void
setcoursename(string coursename) {
this
.coursename = coursename;
}
public
integer getcode() {
return
code;
}
public
void
setcode(integer code) {
this
.code = code;
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
public
class
teacher {
private
string teachername;
private
integer teacherage;
private
course course;
private
list<student> students;
public
string getteachername() {
return
teachername;
}
public
void
setteachername(string teachername) {
this
.teachername = teachername;
}
public
integer getteacherage() {
return
teacherage;
}
public
void
setteacherage(integer teacherage) {
this
.teacherage = teacherage;
}
public
course getcourse() {
return
course;
}
public
void
setcourse(course course) {
this
.course = course;
}
public
list<student> getstudents() {
return
students;
}
public
void
setstudents(list<student> students) {
this
.students = students;
}
}
|
json字符串与javabean之间的转换推荐使用 typereference<t> 这个类,使用泛型可以更加清晰,当然也有其它的转换方式,这里就不做探讨了.
示例2.1-json字符串-简单对象型与javabean之间的转换 。
1
2
3
4
5
6
7
8
|
/**
* json字符串-简单对象与javabean_obj之间的转换
*/
public
static
void
testjsonstrtojavabeanobj(){
student student = json.parseobject(json_obj_str,
new
typereference<student>() {});
//student student1 = jsonobject.parseobject(json_obj_str, new typereference<student>() {});//因为jsonobject继承了json,所以这样也是可以的
system.out.println(student.getstudentname()+
":"
+student.getstudentage());
}
|
示例2.2-json字符串-数组类型与javabean之间的转换 。
1
2
3
4
5
6
7
8
9
10
|
/**
* json字符串-数组类型与javabean_list之间的转换
*/
public
static
void
testjsonstrtojavabeanlist(){
arraylist<student> students = json.parseobject(json_array_str,
new
typereference<arraylist<student>>() {});
//arraylist<student> students1 = jsonarray.parseobject(json_array_str, new typereference<arraylist<student>>() {});//因为jsonarray继承了json,所以这样也是可以的
for
(student student : students) {
system.out.println(student.getstudentname()+
":"
+student.getstudentage());
}
}
|
示例2.3-复杂json格式字符串与与javabean之间的转换 。
1
2
3
4
5
6
7
8
9
10
11
12
|
/**
* 复杂json格式字符串与javabean_obj之间的转换
*/
public
static
void
testcomplexjsonstrtojavabean(){
teacher teacher = json.parseobject(complex_json_str,
new
typereference<teacher>() {});
//teacher teacher1 = json.parseobject(complex_json_str, new typereference<teacher>() {});//因为jsonobject继承了json,所以这样也是可以的
string teachername = teacher.getteachername();
integer teacherage = teacher.getteacherage();
course course = teacher.getcourse();
list<student> students = teacher.getstudents();
}
|
对于typereference<t>,由于其构造方法使用 protected 进行修饰,所以在其他包下创建其对象的时候,要用其实现类的子类:new typereference<teacher>() {} 。
此外的:
1,对于json对象与json格式字符串的转换可以直接用 tojsonstring()这个方法.
2,javabean与json格式字符串之间的转换要用到:json.tojsonstring(obj),
3,javabean与json对象间的转换使用:json.tojson(obj),然后使用强制类型转换,jsonobject或者jsonarray.
最后说一点,我们作为程序员,研究问题还是要仔细深入一点的。当你对原理了解的有够透彻,开发起来也就得心应手了,很多开发中的问题和疑惑也就迎刃而解了,而且在面对其他问题的时候也可做到触类旁通。当然在开发中没有太多的时间让你去研究原理,开发中要以实现功能为前提,可等项目上线的后,你有大把的时间或者空余的时间,你大可去刨根问底,深入的去研究一项技术,为觉得这对一名程序员的成长是很重要的事情.
总结 。
以上所述是小编给大家介绍的fastjson对于json格式字符串、json对象及javabean之间的相互转换,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我网站的支持! 。
原文链接:https://www.cnblogs.com/cdf-opensource-007/p/7106018.html 。
最后此篇关于FastJson对于JSON格式字符串、JSON对象及JavaBean之间的相互转换操作的文章就讲到这里了,如果你想了解更多关于FastJson对于JSON格式字符串、JSON对象及JavaBean之间的相互转换操作的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我的一位教授给了我们一些考试练习题,其中一个问题类似于下面(伪代码): a.setColor(blue); b.setColor(red); a = b; b.setColor(purple); b
我似乎经常使用这个测试 if( object && object !== "null" && object !== "undefined" ){ doSomething(); } 在对象上,我
C# Object/object 是值类型还是引用类型? 我检查过它们可以保留引用,但是这个引用不能用于更改对象。 using System; class MyClass { public s
我在通过 AJAX 发送 json 时遇到问题。 var data = [{"name": "Will", "surname": "Smith", "age": "40"},{"name": "Wil
当我尝试访问我的 View 中的对象 {{result}} 时(我从 Express js 服务器发送该对象),它只显示 [object][object]有谁知道如何获取 JSON 格式的值吗? 这是
我有不同类型的数据(可能是字符串、整数......)。这是一个简单的例子: public static void main(String[] args) { before("one"); }
嗨,我是 json 和 javascript 的新手。 我在这个网站找到了使用json数据作为表格的方法。 我很好奇为什么当我尝试使用 json 数据作为表时,我得到 [Object,Object]
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我听别人说 null == object 比 object == null check 例如: void m1(Object obj ) { if(null == obj) // Is thi
Match 对象 提供了对正则表达式匹配的只读属性的访问。 说明 Match 对象只能通过 RegExp 对象的 Execute 方法来创建,该方法实际上返回了 Match 对象的集合。所有的
Class 对象 使用 Class 语句创建的对象。提供了对类的各种事件的访问。 说明 不允许显式地将一个变量声明为 Class 类型。在 VBScript 的上下文中,“类对象”一词指的是用
Folder 对象 提供对文件夹所有属性的访问。 说明 以下代码举例说明如何获得 Folder 对象并查看它的属性: Function ShowDateCreated(f
File 对象 提供对文件的所有属性的访问。 说明 以下代码举例说明如何获得一个 File 对象并查看它的属性: Function ShowDateCreated(fil
Drive 对象 提供对磁盘驱动器或网络共享的属性的访问。 说明 以下代码举例说明如何使用 Drive 对象访问驱动器的属性: Function ShowFreeSpac
FileSystemObject 对象 提供对计算机文件系统的访问。 说明 以下代码举例说明如何使用 FileSystemObject 对象返回一个 TextStream 对象,此对象可以被读
我是 javascript OOP 的新手,我认为这是一个相对基本的问题,但我无法通过搜索网络找到任何帮助。我是否遗漏了什么,或者我只是以错误的方式解决了这个问题? 这是我的示例代码: functio
我可以很容易地创造出很多不同的对象。例如像这样: var myObject = { myFunction: function () { return ""; } };
function Person(fname, lname) { this.fname = fname, this.lname = lname, this.getName = function()
任何人都可以向我解释为什么下面的代码给出 (object, Object) 吗? (console.log(dope) 给出了它应该的内容,但在 JSON.stringify 和 JSON.parse
我正在尝试完成散点图 exercise来自免费代码营。然而,我现在只自己学习了 d3 几个小时,在遵循 lynda.com 的教程后,我一直在尝试确定如何在工具提示中显示特定数据。 This code
我是一名优秀的程序员,十分优秀!