JS和JAVA使用JSON方法解析.doc_第1页
JS和JAVA使用JSON方法解析.doc_第2页
JS和JAVA使用JSON方法解析.doc_第3页
JS和JAVA使用JSON方法解析.doc_第4页
JS和JAVA使用JSON方法解析.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JS和JAVA使用JSON方法解析一.JS部分=将json字符串转换为json对象的方法。在数据传输过程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键。例如:JSON字符串:javascript view plain copy 在CODE上查看代码片派生到我的代码片var str1 = name: cxh, sex: man ; JSON对象:javascript view plain copy 在CODE上查看代码片派生到我的代码片var str2 = name: cxh, sex: man ; 一、JSON字符串转换为JSON对象要使用上面的str1,必须使用下面的方法先转化为JSON对象:javascript view plain copy 在CODE上查看代码片派生到我的代码片/由JSON字符串转换为JSON对象 var obj = eval( + str + ); 或者javascript view plain copy 在CODE上查看代码片派生到我的代码片/由JSON字符串转换为JSON对象 var obj = str.parseJSON(); 或者javascript view plain copy 在CODE上查看代码片派生到我的代码片/由JSON字符串转换为JSON对象 var obj = JSON.parse(str); 然后,就可以这样读取:javascript view plain copy 在CODE上查看代码片派生到我的代码片Alert(); Alert(obj.sex); 特别注意:如果obj本来就是一个JSON对象,那么使用eval()函数转换后(哪怕是多次转换)还是JSON对象,但是使用parseJSON()函数处理后会有问题(抛出语法异常)。二、可以使用toJSONString()或者全局方法JSON.stringify()将JSON对象转化为JSON字符串。例如:javascript view plain copy 在CODE上查看代码片派生到我的代码片/将JSON对象转化为JSON字符 var last=obj.toJSONString(); 或者javascript view plain copy 在CODE上查看代码片派生到我的代码片/将JSON对象转化为JSON字符 var last=JSON.stringify(obj); alert(last); 注意:上面的几个方法中,除了eval()函数是js自带的之外,其他的几个方法都来自json.js包。新版本的 JSON 修改了 API,将 JSON.stringify() 和 JSON.parse() 两个方法都注入到了 JavaScript 的内建对象里面,前者变成了 Object.toJSONString(),而后者变成了 String.parseJSON()。如果提示找不到toJSONString()和parseJSON()方法,则说明您的json包版本太低。二.Java部分=1. json-lib是一个java类库,提供将Java对象,包括beans, maps, collections, Java arrays and XML等转换成JSON,或者反向转换的功能。2. json-lib 主页 : http:/json-lib.sourceforge.NET/3.执行环境 需要以下类库支持(Maven构建)html view plain copy 在CODE上查看代码片派生到我的代码片pom.xml net.sf.json-lib json-lib 2.4 jdk15 下表中是Java与JavaScript类型对应关系。代码示例:注:在将 Json 形式的字符串转换为 JavaBean 的时候需要注意 JavaBean 中必须有无参构造函数,否则会报如下找不到初始化方法的错误JavaBean代码:java view plain copy 在CODE上查看代码片派生到我的代码片package com.ppl.jsonconvert; public class Student /姓名 private String name; /年龄 private String age; /住址 private String address; /在将 Json 形式的字符串转换为 JavaBean 的时候需要注意 JavaBean 中必须有无参构造函数,否则会报如下找不到初始化方法的错误 public Student() super(); public Student(String name, String age, String address) super(); = name; this.age = age; this.address = address; public String getName() return name; public void setName(String name) = name; public String getAge() return age; public void setAge(String age) this.age = age; public String getAddress() return address; public void setAddress(String address) this.address = address; Override public String toString() return Student name= + name + , age= + age + , address= + address + ; 提供两个工具类,json转换map的实现方法,有点儿简单,应付简单的需求没问题java view plain copy 在CODE上查看代码片派生到我的代码片/* * 将json格式的字符串解析成Map对象 * param object * JSON字符串 * return Map集合 */ public static Map toHashMap(Object object) LinkedHashMap dataMap = new LinkedHashMap(); / 将json字符串转换成jsonObject JSONObject jsonObject = JSONObject.fromObject(object); Iterator it = jsonObject.keys(); / 遍历jsonObject数据,添加到Map对象 while (it.hasNext() String key = String.valueOf(it.next(); String value = (String) jsonObject.get(key); dataMap.put(key, value); return dataMap; java view plain copy 在CODE上查看代码片派生到我的代码片/* * * json转换map. * 详细说明 * param jsonStr json字符串 * return * return Map 集合 * throws * author slj */ public static Map parseJSON2Map(String jsonStr) ListOrderedMap map = new ListOrderedMap(); /最外层解析 JSONObject json = JSONObject.fromObject(jsonStr); for(Object k : json.keySet() Object v = json.get(k); /如果内层还是数组的话,继续解析 if(v instanceof JSONArray) ListMap list = new ArrayListMap(); Iterator it = (JSONArray)v).iterator(); while(Next() JSONObject json2 = it.next(); list.add(parseJSON2Map(json2.toString(); map.put(k.toString(), list); else map.put(k.toString(), v); return map; 测试代码:java view plain copy 在CODE上查看代码片派生到我的代码片package com.ppl.jsonconvert; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import mons.JsonUtils; import net.sf.json.JSONArray; import net.sf.json.JSONObject; public class Test SuppressWarnings( unused, rawtypes, unchecked ) public static void main(String args) /* /普通java实体类转化为JSON字符串形式 /* Student stu=new Student(); stu.setName(JSON); stu.setAge(23); stu.setAddress(北京市西城区); /1、使用JSONObject JSONObject jsonObject = JSONObject.fromObject(stu); String strJson=jsonObject.toString(); /strJson:address:北京市西城区,age:23,name:JSON System.out.println(strJson:+strJson); /2、使用JSONArray JSONArray jsonArray=JSONArray.fromObject(stu); String strArray=jsonArray.toString(); /strArray:address:北京市西城区,age:23,name:JSON System.out.println(strArray:+strArray); / /* /JSON字符串-java对象 /* /定义两种不同格式的字符串 String objectStr=name:JSONStu1,age:18,address:北京市西城区; String arrayStr=name:JSONStu2,age:22,address:济南市历城区; /1、使用JSONObject-将文字列转换为JSON JSONObject jsonObject2=JSONObject.fromObject(objectStr); Student stu2=(Student)JSONObject.toBean(jsonObject2, Student.class); System.out.println(stu2:+stu2); /2、使用JSONArray-将文字列转换为JSON JSONArray jsonArray2=JSONArray.fromObject(arrayStr); /获得jsonArray的第一个元素 Object o=Array2.get(0); JSONObject jsonObject3=JSONObject.fromObject(o); Student stu3=(Student)JSONObject.toBean(jsonObject3, Student.class); System.out.println(stu3:+stu3); /* /Map转换成json, 大多使用jsonObject(注1) /* /不建议使用出自于 mons.collections.OrderedMap /Map ordermap = (Map)new ListOrderedMap(); /有序的Map Map ordermap = new LinkedHashMap(); Map map = new HashMap(); map.put( name, json ); map.put( bool, Boolean.TRUE ); map.put( int, new Integer(1) ); map.put( arr, new Stringa,b ); map.put( func, function(i) return this.arri; ); JSONObject jsonObjectMap = JSONObject.fromObject( map ); System.out.println( Map转换成json:+jsonObjectMap ); /注1示例详解 Student stu4=new Student(JSON,28,上海); Map map4=new HashMap(); map4.put(first, stu4); /1、JSONObject JSONObject mapObject=JSONObject.fromObject(map4); System.out.println(mapObject+mapObject.toString(); /2、JSONArray JSONArray mapArray=JSONArray.fromObject(map4); System.out.println(mapArray:+mapArray.toString(); /* /list-json字符串,使用JSONArray /* Student stu5=new Student(student1,16,jinan); Student stu6=new Student(student2,26,qingdao); List lists=new ArrayList(); lists.add(stu5); lists.add(stu6); /1、 使用JSONArray JSONArray listArray=JSONArray.fromObject(lists); System.out.println(listArray:+listArray.toString(); /* /json字符串-list /* String arrayStr2=name:JSON,age:24

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论