JS和JAVA使用JSON方法解析.doc

上传人:jian****018 文档编号:8770330 上传时间:2020-03-31 格式:DOC 页数:8 大小:36KB
返回 下载 相关 举报
JS和JAVA使用JSON方法解析.doc_第1页
第1页 / 共8页
JS和JAVA使用JSON方法解析.doc_第2页
第2页 / 共8页
JS和JAVA使用JSON方法解析.doc_第3页
第3页 / 共8页
点击查看更多>>
资源描述
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(obj.name); 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(); this.name = name; this.age = age; this.address = address; public String getName() return name; public void setName(String name) this.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(it.haswww.wang027.comNext() 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 com.ppl.json.commons.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=jsonwww.baiyuewang.netArray2.get(0); JSONObject jsonObject3=JSONObject.fromObject(o); Student stu3=(Student)JSONObject.toBean(jsonObject3, Student.class); System.out.println(stu3:+stu3); /* /Map转换成json, 大多使用jsonObject(注1) /* /不建议使用出自于 org.apache.commons.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,address:济南高新区; /转化为list List list2=(List)JSONArray.toList(JSONArray.fromObject(arrayStr2), Student.class); for (Student stus : list2) System.out.println(stus); /最新的方法json字符串-list JSONArray jsonArrayT = JSONArray.fromObject(arrayStr2); List listData = (List) JSONArray.toCollection(jsonArrayT, Student.class); for (Student stus : listData) System.out.println(listData: +stus); /转化为数组 Student ss =(Student)JSONArray.toArray(JSONArray.fromObject(arrayStr),Student.class); for (Student student : ss) System.out.println(student); /* /json字符串-Map /* /BUG_TODO-BUG String strObject=KEY:address:中国上海,age:23,name:JSON; Map dataMap = JsonUtils.toHashMap(strObject); System.out.println(dataMap.toString();
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!