`
frank1998819
  • 浏览: 731408 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类

JSON字符串与JSON对象互转(前、后台)(转)

    博客分类:
  • JS
 
阅读更多

SON官网:官网地址 (各种编程语言对应的工具应有尽有,前提能读英文)

 

json: json为前端后端以及网络传输的数据交换格式,可以通过它来表示各种各样复杂的数据,如对象,数组,集合,以及集合的集合等数据。

 

以下不讲概念问题,只介绍代码如何实现。 

 

 

前端(js):

              json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键,下面将介绍两者之间的相互转换。

 

Js代码  收藏代码
  1. json字符串:var str1 = '{ "name": "zyy", "sex": "man" }';//最外面包含了一对单引号  
  2.  var str2 = { "name""zyy""sex""man" };    //严格的json组成格式  

1.json字符串-->json对象(四种方式)

      1.使用原生的js函数进行解析

Js代码  收藏代码
  1. var obj = eval('(' + str1 + ')');  

       2.使用jquery插件提供的工具进行解析

Js代码  收藏代码
  1. var obj = $.parseJSON( str1 );  

       3.使用js原生的JSON对象进行解析(此种方式会出现低版本浏览器<=IE8不兼容问题,不推荐,具体参见

Js代码  收藏代码
  1. var obj = JSON.parse(str1);  

       4.使用JSON官网上提供的json2.js类库对象进行解析 (官网地址 下载json2.js地址),ps:记得引入该文件哦,嘿嘿

Js代码  收藏代码
  1. var obj = JSON.parse(str1);  

         注意:如果obj本来就是一个JSON对象,那么运用 eval()函数转换后(哪怕是多次转换)还是JSON对象,但是运用 parseJSON()函数处理后会有疑问(抛出语法异常)。

2.json对象 --> json字符串

     1.使用JSON官网上提供的json2.js类库对象进行解析

Js代码  收藏代码
  1. var str = JSON.stringify(str2);  

     2.使用js原生的方法(兼容性和上面的3一样)

Js代码  收藏代码
  1. var str = str2.toJSONString();  

 

 

 

 

 ---------------------------------------------------分割线--------------------------------------------------------------------

 

 

 后端(java)

 

 java提供的处理json的类库比较多,类库都是提供了一些对java对象(内含集合、对象、数组等复杂数据类型)或者数组的序列化和反序列换的功能。常用的一些类库如下:

1.org.json    源码下载     官网地址(含API)

2.fastjson(国产) 

3.json-lib

4.jackson

5.Gson

此处是常用类库性能比较 

注:序列化(对象-->json字符串)      反序列化(json字符串-->对象)

 

由于大多数类库的功能都差不多,所以只介绍fastjson这一种

 

 

以下是几个基本的bean类型

 

student类:

 

 

Java代码  收藏代码
  1. public class Student {  
  2.   
  3.     private int studentId;  
  4.       
  5.     private String username;  
  6.       
  7.     private int age;  
  8.       
  9.     private String sex;  
  10.   
  11.     //省略setter /getter方法  
  12. }  

 

Class类

 

Java代码  收藏代码
  1. public class Class {  
  2.       
  3.     private int classId;  
  4.       
  5.     private Set<Student> students;  //上面的Student类集合  
  6.         //省略setter和getter方法  
  7.   
  8. }  

 

School类

Java代码  收藏代码
  1. public class School {  
  2.   
  3.     private int schoolId;  
  4.       
  5.     private Set<Class> classes; //上面的class对象集合  
  6.         //省略setter和getter方法  
  7. }  

 

测试代码

Java代码  收藏代码
  1. public class FastjsonTest {  
  2.   
  3.     public static void main(String[] args) {  
  4.         //构造学生对象  
  5.         Student stu1 = new Student();  
  6.         stu1.setStudentId(1);  
  7.         stu1.setUsername("张三");  
  8.         Student stu2 = new Student();  
  9.         stu2.setStudentId(2);  
  10.         stu2.setUsername("李四");  
  11.   
  12.         //构造class对象  
  13.         Class class1 = new Class();  
  14.         Set<Student> sets = new HashSet<Student>();  
  15.         sets.add(stu2);  
  16.         sets.add(stu1);  
  17.         class1.setClassId(7);  
  18.         class1.setStudents(sets);  
  19.           
  20.         //构造学校  
  21.         School school = new School();  
  22.         Set<Class> sets1 = new HashSet<Class>();  
  23.         sets1.add(class1);  
  24.         school.setSchoolId(2014);  
  25.         school.setClasses(sets1);  
  26.           
  27.         String jsonString = JSONObject.toJSONString(school);  //序列化  
  28.         System.out.println(jsonString);  
  29.         System.out.println("-----------------------------");  
  30.         School school2 = JSONObject.parseObject(jsonString, School.class);  //反序列化  
  31.         Iterator<Class> set = school2.getClasses().iterator();  
  32.         while(set.hasNext()){  
  33.             Class class2 = set.next();  
  34.             System.out.println("classId=" + class2.getClassId() + "  ");  
  35.               
  36.             Iterator<Student> sIterator = class2.getStudents().iterator();  
  37.             while(sIterator.hasNext()){  
  38.                 Student student = sIterator.next();  
  39.                 System.out.println( " \t" + "studentId="+ student.getStudentId() + ",username=" + student.getUsername());  
  40.             }  
  41.             System.out.println();  
  42.         }  
  43.     }  
  44.       
  45.   
  46. }  

 

 

 

 

 最后:以上只是简单的一些功能,当然类库中还有很多其他的一些功能,想要深入,自行去查阅吧,哈哈! 喝杯茶去!

 

分享到:
评论

相关推荐

    将js对象转换成json数据

    将js对象转换成json格式的数据的字符串,方便后台进行转换处理

    android发送post请求获取json字符串

    向后台发送post请求,根据需要发送多个键值对,获取返回的json字符串

    将JSON字符串转换成Map对象的方法

    页面向后台action传递一个json字符串,需要将json字符串转换成Map对象 public Map&lt;String&gt; toMap(Object object) { Map&lt;String&gt; data = new HashMap(); // 将json字符串转换成jsonObject JSONObject jsonObject...

    js 转json格式的字符串为对象或数组(前后台)的方法

    一、前台 // 转换成对象 var myObject = JSON.parse(_data); alert&#40;...//把json格式的字符串转成JSON对象 var json1 = '{department: 中兵,address: 北京,contacts: 李硕,telphone: 1520127466

    后台日期类型转json字符串传到页面

    想必我们在做项目的时候,都会遇到服务端与客户端交互数据。一般情况下我们都会采用json格式或者xml格式,将服务端的数据转换成这两种格式之一。 但是,如果我们将数据转换成json格式的时候,我们也许会遇到Date日期...

    复杂JSON格式对象转化成字符串工具包

    这个主要是运用在ajax里面向服务器传送复杂格式的json,如何在后台进行转化,很好用!

    安卓app与后台通信(数据格式:Json字符串)

    最近做一款app,这几天跟后台调试数据通信,网上搜的工具类大多是直接传的Map,我们后台只认得到Json字符串,没办法,自己动手封装了一个工具类,里面只封装了post方法。成功跟后台实现通信,亲测可用,代码里面的...

    解析JSON对象与字符串之间的相互转换

    在开发的过程中,如果对于少量参数的前后台传递,可以直接采用ajax的data函数,按json格式传递,后台Request即可,但有的时候,需要传递多个参数,这样后台 接受的时候Request多个很麻烦,此时要按照类的格式或者 ...

    正则表达式优化JSON字符串的技巧

    json字符串很有用,有时候一些后台接口返回的信息是字符串格式的,可读性很差,这个时候要是有个可以格式化并高亮显示json串的方法那就好多了,下面看看一个正则表达式完成的json字符串的格式化与高亮显示 ...

    java验证字符串是否符合json格式

    json数据交互时作为校验是否通过,用于后台需要构建json返回前台必备

    jQuery+get/post+Ajax+Json

    本项目使用了jQuery的get/post两种方法提交Json格式的数据到后台,后台再把Json格式的数据传到前台。实现了JSON字符串和JSON对象之间的转换。

    使用json-lib自定义复杂类型转换为Json字符串

    使用json-lib重写toJsonString方法,从而方便处理后台数据显示到前台的情况。

    使用正则表达式的格式化与高亮显示json字符串

    json字符串很有用,有时候一些后台接口返回的信息是字符串格式的,可读性很差,这个时候要是有个可以格式化并高亮显示json串的方法那就好多了,下面看看一个正则表达式完成的json字符串的格式化与高亮显示 ...

    2017XML字符串转对象Object 实现工具

    实现 XML字符串转VO对象的实现 1.0:标签读取,属性读取,List类型标签实现 以下是 测试说明 原XML: &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;HEADER NAME="HEADERname" name_cn="头名称"&gt;标签text...

    servlet局部刷新及json字符串

    1.纯servlet+jquery局部刷新; 2.fresh 后台包含 json内容,需要json相关jar包,自行下载,不需要的可以删除; 3.有页面点击事件,初学者可以研究下... 4.QQ569317668 不喜勿喷 servlet局部刷新及json字符串 相互学习!

    springboot后台接收axios传递的json数据为null

    在前端传入的是json字符串,后台按字符串string参数接收再解析。 请求头contentType设置为application/x-www-form-urlencoded;charset=utf-8。 后台接收请求的方法的参数可以用String类型 @RequestBody 是作用在形参...

    JSON字符串传到后台PHP处理问题的解决方法

    主要介绍了JSON字符串传到后台PHP处理问题的解决方法,需要的朋友可以参考下

    JAVA Cookie JSON 项目中应用

    //设置cookies function setCookie(name, value, expires, path, domain, secure) //根据cookies key值获取value ...* json字符串转json对象 */ var jsonObj = eval('('+jsonStr+')') 后台Java解析json

    AnyFo - Util - Json4Ext:通用ExtJS数据交换处理

    AnyFo - Util - Json4Ext Json4Ext项目背景 在大家开发的系统中,如果程序用ExtJS做表现层,那么就需要使ExtJS开发的界面和后台Java代码中生成的数据交互,一般来说,可以...4. ExtJS中的Tree控件需要的Json字符串

Global site tag (gtag.js) - Google Analytics