JS和JAVA使用JSON方法解析

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

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(https://www.360docs.net/doc/8d2169400.html,);

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 主页:https://www.360docs.net/doc/8d2169400.html,/

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();

https://www.360docs.net/doc/8d2169400.html, = name;

this.age = age;

this.address = address;

}

public String getName() {

return name;

public void setName(String name) {

https://www.360docs.net/doc/8d2169400.html, = 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){

List> list = new ArrayList>();

Iterator it = ((JSONArray)v).iterator();

while(https://www.360docs.net/doc/8d2169400.html,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 https://www.360docs.net/doc/8d2169400.html,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=https://www.360docs.net/doc/8d2169400.html,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)

///******************************

//不建议使用出自于https://www.360docs.net/doc/8d2169400.html,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 String[]{"a","b"} );

map.put( "func", "function(i){ return this.arr[i]; }" );

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());

}

}

后台转换JSON数据类型,前台解析JSON数据等等例子总结

后台转换JSON数据类型,前台解析JSON数据等等例子总结 JSON对象: JSONObject obj = new JSONObject(); obj.put("result", 0); obj.put("message", message); return obj.toJSONString(); 前台解析: Success:function(data){ var result = data.result; var message = data.message; } json对象中有json对象的写法: Objstr为一个JSONObject obj的String转换 private String getsuccess(String objstr,int number){ JSONObject obj = new JSONObject(); obj.put("result", 1); obj.put("obj", objstr); obj.put("number", number); return obj.toJSONString(); }

前台解析: Picjson为success返回的data var result = picjson.result; if (result==1) { var objdata = picjson.obj; var data = eval('(' + objdata + ')'); var num = picjson.number; picurl = null; showpiclist(data, num); } else{ alert(picjson.message); picurl = null; } list转成json对象 需要的包: https://www.360docs.net/doc/8d2169400.html,mons-lang.jar https://www.360docs.net/doc/8d2169400.html,mons-beanutils.jar https://www.360docs.net/doc/8d2169400.html,mons-collections.jar https://www.360docs.net/doc/8d2169400.html,mons-logging.jar

jQuery+AJAX+JSON

jQuery 1. 什么是jQuery?? jQuery是一个优秀的JavaScript框架,一个轻量级的JavaScript类库。 jQuery的核心理念是Write less,Do more。 使用jQuery可以兼容各种浏览器,方便的处理HTML、Events、动画效果等,并且方便的为网站提供AJAX交互。 2.jQuery的特点: 利用选择器来查找要操作的节点,然后将这些节点封装成一个jQuery对象,通过调用jQuery对象的方法或者属性来实现对底层被封装的节点的操作。 好处:a、兼容性更好;b、代码更简洁 3.编程步骤: step1、使用选择器查找节点 step2、调用jQuery的属性和方法 4.jQuery对象与DOM对象之间的转换 1. 什么是jQuery对象?? jQuery对象是jQuery对底层对象的一个封装,只有创建了这个对象,才能使用类库中提供的方法。 2. DOM对象 ----> jQuery对象 DOM对象向jQuery对象的转变很容易,外面追加$和圆括号即可。 function f( ){ var obj = document.getElementById(‘d1’); //DOM -> jQuery对象

var $obj = $(obj); $obj.html(‘hello jQuery’); } 3. jQuery对象 ----> DOM对象 jQuery对象向DOM对象转化,通过调用get方法加参数值0即可$obj.get(0)。 function f( ){ var $obj = $(‘#d1’); //jQuery对象 -> DOM var obj = $(obj).get (0); obj.innerHTML = ‘hello jQuery’; } 5. jQuery选择器 1. 什么是jQuery选择器?? jQuery选择器是一种类似CSS选择器的特殊说明符号,能够帮助jQuery 定位到要操作的元素上,使用了选择器可以帮助HTML实现内容与行为的分离。只需要在元素上加上Id属性。 2. 选择器的种类 a、基本选择器 #id根据指定的ID匹配一个元素 .class根据指定的类匹配一个元素 element根据的指定的元素名匹配所有的元素

Json数据格式的使用方法入门教程

JSON 数据格式解析 和 XML 一样,JSON 也是基于纯文本的数据格式。由于 JSON 天生是为JavaScript 准备的,因此,JSON 的数据格式非常简单,您可以用 JSON 传输一个简单的 String,Number,Boolean,也可以传输一个数组,或者一个复杂的Object 对象。 String,Number 和 Boolean 用 JSON 表示非常简单。例如,用 JSON 表示一个简单的 String “ abc ”,其格式为: "abc" 除了字符 ",\,/ 和一些控制符(\b,\f,\n,\r,\t)需要编码外,其他 Unicode 字符可以直接输出。下图是一个 String 的完整表示结构: 图 1. String 的完整表示结构 一个 Number 可以根据整型或浮点数表示如下:

图 2. Number 的表示结构 这与绝大多数编程语言的表示方法一致,例如: 12345(整数) -3.9e10(浮点数) Boolean 类型表示为 true 或 false 。此外,JavaScript 中的 null 被表示为 null,注意,true、false 和 null 都没有双引号,否则将被视为一个String 。 JSON 还可以表示一个数组对象,使用 [] 包含所有元素,每个元素用逗号分隔,元素可以是任意的 Value,例如,以下数组包含了一个 String,Number,Boolean 和一个 null: Object 对象在 JSON 中是用 {} 包含一系列无序的 Key-Value 键值对表示的,实际上此处的 Object 相当于 Java 中的 Map,而不是Java 的 Class 。注意 Key 只能用 String 表示。 例如,一个 Address 对象包含如下 Key-Value:

Jquery Ajax 异步处理Json数据

啥叫异步,啥叫Ajax.咱不谈啥XMLHTTPRequest.通俗讲异步就是前台页面javascript能调用后台方法.这样就达到了无刷新.所谓的Ajax.这里我们讲二种方法 方法一:(微软有自带Ajax框架) 在https://www.360docs.net/doc/8d2169400.html,里微软有自己的Ajax框架.就是在页面后台.cs文件里引入 using System.Web.Services 空间然后定义静态方法(方法前加上 [WebMethod]) [WebMethod] public static string ABC(string ABC) { return ABC; } 好了,现在我们谈谈前台Js怎么处理后台返回的数据吧,可利用Jquery处理返回的纯html,json,Xml等数据.这里我们演示返回返回的数据有string、集合(List<>)、类. 但都返回Json格式(Json轻量级比XML处理起来简单).看看前台是怎么解析这些数据的. 代码如下: 前台页面: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %> 无标题页