- 浏览: 191639 次
- 性别:
- 来自: 深圳
最新评论
-
shis_y:
那是你的localhost或者web服务器的80端口被占用或者 ...
通过虚拟地址解决fckeditor错误的加载/fckeditor/fckstyles.xml -
forcer521:
com.gemt.dataswap.util.Constant ...
使用DES算法进行加密和解密 -
ngn9999:
dTree确实不错,这是我的使用经验: http://www. ...
javascript树型菜单(Dtree和Xtree) -
yueliangwolf:
这个dhtmlxtree.js里面有enableSmartXM ...
使用xml或者json方式生成dhtmlxtree -
yanMouse:
谢谢,能否有个联系方式,我现在也在看这方面的东西
dhtmlxtree的一个实用demo
JSON作为一种信息的载体伴随着AJAX的红火也越来越得到广大用户的青睐和认可!在没有使用JSON的时候,数据
从后台数据库到前台AJAX的返回显示,一般都要经过SQL查询--数据封装(封装成字符串或者XML文本)--前台解析
字符串或者XML文本,提取需要的东西出来。这其中包含了太多的转换关系,劳明伤财,也有很多人在探索一种
能够使大家都能认识的数据结构,这个时候大家都想到了JSON,可以说JSON也不是新的东西,出来好多年了,
Javascript一直都内置了JSON的支持,很多时候我们都是使用JSON的语法来定义一个Javascript的对象!看一看
JSON的官方网站(http://json.org/)就知道它目前基本上已经覆盖了大多数语言,这意味着大多数情况下的跨语言
环境下的数据交换,使用JSON是一个不错的选择!
1. Javascript(虽然已经内置支持,但是这里有一个开发包可以使用)
(1) 使用JSON语法定义一个Javascript对象
var myJSONObject = {"bindings": [
{"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
{"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},
{"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"}
]
};
myJSONObject.bindings[0].method 将返回newURI
(2) 把普通字符串转换成JavaScript对象(需要扩展包支持)
var myObject = JSON.parse(myJSONtext, filter);
myData = JSON.parse(text, function (key, value) { return key.indexOf('date') >= 0 ? new Date(value) : value; });
(3) JSON对象转换成字符串
var myJSONText = JSON.stringify(myObject);
2. Java对JSON的支持(没有原生的支持,需要使用第三方的扩展包来实现)
Java的JSON开发包很多,也有很多实用且功能强大的
(1) json-lib (http://json-lib.sourceforge.net/usage.html)
a.) JSON和Java的类型对应关系
JSON Java
string <=> java.lang.String, java.lang.Character, char
number <=> java.lang.Number, byte, short, int, long, float, double
true|false <=> java.lang.Boolean, boolean
null <=> null
function <=> net.sf.json.JSONFunction
array <=> net.sf.json.JSONArray (object, string, number, boolean, function)
object <=> net.sf.json.JSONObject
b.) json-lib的依赖库
jakarta commons-lang 2.3
jakarta commons-beanutils 1.7.0
jakarta commons-collections 3.2
jakarta commons-logging 1.1
ezmorph 1.0.3
xom 1.1(如果要用到xml文件的解析的话)
c.) 可运行实例
package com.gomt.json.jsonlib;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.xml.XMLSerializer;
import org.apache.commons.beanutils.PropertyUtils;
public class JsonLibMain {
public JsonLibMain() {
// TODO Auto-generated constructor stub
}
/**
* @param args
* @throws NoSuchMethodException
* @throws InvocationTargetException
* @throws IllegalAccessException
*/
public static void main(String[] args) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
boolean[] boolArray = new boolean[]{true,false,true};
JSONArray jsonArray = JSONArray.fromObject( boolArray );
System.out.println("***1*** = " + jsonArray );
Collection<String> list = new ArrayList<String>();
list.add( "first" );
list.add( "second" );
jsonArray = JSONArray.fromObject( list );
System.out.println("***2*** = " + jsonArray );
jsonArray = JSONArray.fromObject( "['json','is','easy']" );
System.out.println("***3*** = " + jsonArray );
Map<String, Object> map = new HashMap<String, Object>();
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 jsonObject = JSONObject.fromObject( map );
System.out.println("***4*** = " + jsonObject );
jsonObject = JSONObject.fromObject( new MyBean() );
System.out.println("***5*** = " + jsonObject );
String json = "{name=\"json\",bool:true,int:1,double:2.2,func:function(a){ return a; },array:[1,2]}";
jsonObject = JSONObject.fromObject( json );
Object bean = JSONObject.toBean( jsonObject );
System.out.print("***6*** = " + jsonObject.get( "name" ) + " " + PropertyUtils.getProperty( bean, "name" ) );
System.out.print("\t " + jsonObject.get( "bool" ) + " = " + PropertyUtils.getProperty( bean, "bool" ) );
System.out.print("\t " + jsonObject.get( "int" ) + " = " + PropertyUtils.getProperty( bean, "int" ) );
System.out.print("\t " + jsonObject.get( "double" ) + " = " + PropertyUtils.getProperty( bean, "double" ) );
System.out.print("\t " + jsonObject.get( "func" ) + " = " + PropertyUtils.getProperty( bean, "func" ) );
List expected = JSONArray.toList( jsonObject.getJSONArray( "array" ) );
System.out.println("\t " + expected + " = " + (List) PropertyUtils.getProperty( bean, "array" ) );
json = "{bool:true,integer:1,string:\"json\"}";
jsonObject = JSONObject.fromObject( json );
MyBean myBean = (MyBean) JSONObject.toBean( jsonObject, MyBean.class );
System.out.print("***7*** = " + jsonObject.get( "bool" ) + " = " + Boolean.valueOf( myBean.isBool() ) );
System.out.print("\t " + jsonObject.get( "integer" ) + " = " +new Integer( myBean.getInteger() ) );
System.out.println("\t " + jsonObject.get( "string" )+ " = " + myBean.getString() );
//需要用到ezmorph
json = "{'data':[{'name':'clarance','userId':100001},{'name':'peng','userId':100002}]}";
Map<String,Class<Person>> classMap = new HashMap<String,Class<Person>>();
classMap.put( "data", Person.class );
myBean = (MyBean)JSONObject.toBean(JSONObject.fromObject(json), MyBean.class, classMap);
if(myBean != null && myBean.getData() != null) {
for(Person p : myBean.getData()) {
System.out.println("***8*** = " + "用户id: " + p.getUserId() + " 用户名: " + p.getName());
}
}
/*
Morpher dynaMorpher = new BeanMorpher( Person.class, JSONUtils.getMorpherRegistry() );
MorpherRegistry morpherRegistry = new MorpherRegistry();
morpherRegistry.registerMorpher( dynaMorpher );
List output = new ArrayList();
for( Iterator i = myBean.getData().iterator(); i.hasNext(); ){
output.add( morpherRegistry.morph( Person.class, i.next() ) );
}
myBean.setData( output );
*/
/**
* XML和JSON之间的转换,需要用到xom
*/
jsonObject = new JSONObject( true );
XMLSerializer xmls = new XMLSerializer();
String xml = xmls.write( jsonObject );
System.out.println("***9*** = " + xml);
jsonObject = JSONObject.fromObject("{\"name\":\"json\",\"bool\":true,\"int\":1}");
xmls = new XMLSerializer();
xml = xmls.write( jsonObject );
System.out.println("***10*** = " + xml);
jsonArray = JSONArray.fromObject("[1,2,3]");
xmls = new XMLSerializer();
xml = xmls.write( jsonArray );
System.out.println("***11*** = " + xml);
xml = "<a class=\"array\"><e type=\"function\" params=\"i,j\">return matrix[i][j];</e></a> ";
xmls = new XMLSerializer();
jsonArray = (JSONArray) xmls.read( xml);
System.out.println("***12*** = " + jsonArray );
}
}
package com.gomt.json.jsonlib;
import java.util.List;
import net.sf.json.JSONFunction;
public class MyBean implements java.io.Serializable {
private static final long serialVersionUID = -784610042144660631L;
private String name = "json";
private int pojoId = 1;
private char[] options = new char[]{'a','f'};
private String func1 = "function(i){ return this.options[i]; }";
private JSONFunction func2 = new JSONFunction(new String[]{"i"},"return this.options[i];");
private Integer integer;
private Boolean bool;
private String string;
private List<Person> data;
public Boolean isBool() {
return bool;
}
public void setBool(Boolean bool) {
this.bool = bool;
}
public String getString() {
return string;
}
public void setString(String string) {
this.string = string;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPojoId() {
return pojoId;
}
public void setPojoId(int pojoId) {
this.pojoId = pojoId;
}
public char[] getOptions() {
return options;
}
public void setOptions(char[] options) {
this.options = options;
}
public String getFunc1() {
return func1;
}
public void setFunc1(String func1) {
this.func1 = func1;
}
public JSONFunction getFunc2() {
return func2;
}
public void setFunc2(JSONFunction func2) {
this.func2 = func2;
}
public Integer getInteger() {
return integer;
}
public void setInteger(Integer integer) {
this.integer = integer;
}
public Boolean getBool() {
return bool;
}
public List<Person> getData() {
return data;
}
public void setData(List<Person> data) {
this.data = data;
}
}
package com.gomt.json.jsonlib;
import java.io.Serializable;
public class Person implements Serializable {
private static final long serialVersionUID = 7699163849016962711L;
private int userId;
private String name;
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
d.) 运行结果
***1*** = [true,false,true]
***2*** = ["first","second"]
***3*** = ["json","is","easy"]
***4*** = {"func":function(i){ return this.arr[i]; },"arr":["a","b"],"int":1,"name":"json","bool":true}
***5*** = {"string":"","integer":0,"func1":function(i){ return this.options[i]; },"data":[],"pojoId":1,"name":"json","bool":false,"options":["a","f"],"func2":function(i){ return this.options[i]; }}
***6*** = json json true = true 1 = 1 2.2 = 2.2 function(a){ return a; } = function(a){ return a; } [1, 2] = [1, 2]
***7*** = true = true 1 = 1 json = json
***8*** = 用户id: 100001 用户名: clarance
***8*** = 用户id: 100002 用户名: peng
***9*** = <?xml version="1.0" encoding="UTF-8"?>
<o null="true"/>
***10*** = <?xml version="1.0" encoding="UTF-8"?>
<o><bool type="boolean">true</bool><int type="number">1</int><name type="string">json</name></o>
***11*** = <?xml version="1.0" encoding="UTF-8"?>
<a><e type="number">1</e><e type="number">2</e><e type="number">3</e></a>
2007-12-7 9:08:29 net.sf.json.xml.XMLSerializer getType
信息: Using default type string
***12*** = [function(i,j){ return matrix[i][j]; }]
从后台数据库到前台AJAX的返回显示,一般都要经过SQL查询--数据封装(封装成字符串或者XML文本)--前台解析
字符串或者XML文本,提取需要的东西出来。这其中包含了太多的转换关系,劳明伤财,也有很多人在探索一种
能够使大家都能认识的数据结构,这个时候大家都想到了JSON,可以说JSON也不是新的东西,出来好多年了,
Javascript一直都内置了JSON的支持,很多时候我们都是使用JSON的语法来定义一个Javascript的对象!看一看
JSON的官方网站(http://json.org/)就知道它目前基本上已经覆盖了大多数语言,这意味着大多数情况下的跨语言
环境下的数据交换,使用JSON是一个不错的选择!
1. Javascript(虽然已经内置支持,但是这里有一个开发包可以使用)
(1) 使用JSON语法定义一个Javascript对象
var myJSONObject = {"bindings": [
{"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
{"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},
{"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"}
]
};
myJSONObject.bindings[0].method 将返回newURI
(2) 把普通字符串转换成JavaScript对象(需要扩展包支持)
var myObject = JSON.parse(myJSONtext, filter);
myData = JSON.parse(text, function (key, value) { return key.indexOf('date') >= 0 ? new Date(value) : value; });
(3) JSON对象转换成字符串
var myJSONText = JSON.stringify(myObject);
2. Java对JSON的支持(没有原生的支持,需要使用第三方的扩展包来实现)
Java的JSON开发包很多,也有很多实用且功能强大的
(1) json-lib (http://json-lib.sourceforge.net/usage.html)
a.) JSON和Java的类型对应关系
JSON Java
string <=> java.lang.String, java.lang.Character, char
number <=> java.lang.Number, byte, short, int, long, float, double
true|false <=> java.lang.Boolean, boolean
null <=> null
function <=> net.sf.json.JSONFunction
array <=> net.sf.json.JSONArray (object, string, number, boolean, function)
object <=> net.sf.json.JSONObject
b.) json-lib的依赖库
jakarta commons-lang 2.3
jakarta commons-beanutils 1.7.0
jakarta commons-collections 3.2
jakarta commons-logging 1.1
ezmorph 1.0.3
xom 1.1(如果要用到xml文件的解析的话)
c.) 可运行实例
package com.gomt.json.jsonlib;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.xml.XMLSerializer;
import org.apache.commons.beanutils.PropertyUtils;
public class JsonLibMain {
public JsonLibMain() {
// TODO Auto-generated constructor stub
}
/**
* @param args
* @throws NoSuchMethodException
* @throws InvocationTargetException
* @throws IllegalAccessException
*/
public static void main(String[] args) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
boolean[] boolArray = new boolean[]{true,false,true};
JSONArray jsonArray = JSONArray.fromObject( boolArray );
System.out.println("***1*** = " + jsonArray );
Collection<String> list = new ArrayList<String>();
list.add( "first" );
list.add( "second" );
jsonArray = JSONArray.fromObject( list );
System.out.println("***2*** = " + jsonArray );
jsonArray = JSONArray.fromObject( "['json','is','easy']" );
System.out.println("***3*** = " + jsonArray );
Map<String, Object> map = new HashMap<String, Object>();
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 jsonObject = JSONObject.fromObject( map );
System.out.println("***4*** = " + jsonObject );
jsonObject = JSONObject.fromObject( new MyBean() );
System.out.println("***5*** = " + jsonObject );
String json = "{name=\"json\",bool:true,int:1,double:2.2,func:function(a){ return a; },array:[1,2]}";
jsonObject = JSONObject.fromObject( json );
Object bean = JSONObject.toBean( jsonObject );
System.out.print("***6*** = " + jsonObject.get( "name" ) + " " + PropertyUtils.getProperty( bean, "name" ) );
System.out.print("\t " + jsonObject.get( "bool" ) + " = " + PropertyUtils.getProperty( bean, "bool" ) );
System.out.print("\t " + jsonObject.get( "int" ) + " = " + PropertyUtils.getProperty( bean, "int" ) );
System.out.print("\t " + jsonObject.get( "double" ) + " = " + PropertyUtils.getProperty( bean, "double" ) );
System.out.print("\t " + jsonObject.get( "func" ) + " = " + PropertyUtils.getProperty( bean, "func" ) );
List expected = JSONArray.toList( jsonObject.getJSONArray( "array" ) );
System.out.println("\t " + expected + " = " + (List) PropertyUtils.getProperty( bean, "array" ) );
json = "{bool:true,integer:1,string:\"json\"}";
jsonObject = JSONObject.fromObject( json );
MyBean myBean = (MyBean) JSONObject.toBean( jsonObject, MyBean.class );
System.out.print("***7*** = " + jsonObject.get( "bool" ) + " = " + Boolean.valueOf( myBean.isBool() ) );
System.out.print("\t " + jsonObject.get( "integer" ) + " = " +new Integer( myBean.getInteger() ) );
System.out.println("\t " + jsonObject.get( "string" )+ " = " + myBean.getString() );
//需要用到ezmorph
json = "{'data':[{'name':'clarance','userId':100001},{'name':'peng','userId':100002}]}";
Map<String,Class<Person>> classMap = new HashMap<String,Class<Person>>();
classMap.put( "data", Person.class );
myBean = (MyBean)JSONObject.toBean(JSONObject.fromObject(json), MyBean.class, classMap);
if(myBean != null && myBean.getData() != null) {
for(Person p : myBean.getData()) {
System.out.println("***8*** = " + "用户id: " + p.getUserId() + " 用户名: " + p.getName());
}
}
/*
Morpher dynaMorpher = new BeanMorpher( Person.class, JSONUtils.getMorpherRegistry() );
MorpherRegistry morpherRegistry = new MorpherRegistry();
morpherRegistry.registerMorpher( dynaMorpher );
List output = new ArrayList();
for( Iterator i = myBean.getData().iterator(); i.hasNext(); ){
output.add( morpherRegistry.morph( Person.class, i.next() ) );
}
myBean.setData( output );
*/
/**
* XML和JSON之间的转换,需要用到xom
*/
jsonObject = new JSONObject( true );
XMLSerializer xmls = new XMLSerializer();
String xml = xmls.write( jsonObject );
System.out.println("***9*** = " + xml);
jsonObject = JSONObject.fromObject("{\"name\":\"json\",\"bool\":true,\"int\":1}");
xmls = new XMLSerializer();
xml = xmls.write( jsonObject );
System.out.println("***10*** = " + xml);
jsonArray = JSONArray.fromObject("[1,2,3]");
xmls = new XMLSerializer();
xml = xmls.write( jsonArray );
System.out.println("***11*** = " + xml);
xml = "<a class=\"array\"><e type=\"function\" params=\"i,j\">return matrix[i][j];</e></a> ";
xmls = new XMLSerializer();
jsonArray = (JSONArray) xmls.read( xml);
System.out.println("***12*** = " + jsonArray );
}
}
package com.gomt.json.jsonlib;
import java.util.List;
import net.sf.json.JSONFunction;
public class MyBean implements java.io.Serializable {
private static final long serialVersionUID = -784610042144660631L;
private String name = "json";
private int pojoId = 1;
private char[] options = new char[]{'a','f'};
private String func1 = "function(i){ return this.options[i]; }";
private JSONFunction func2 = new JSONFunction(new String[]{"i"},"return this.options[i];");
private Integer integer;
private Boolean bool;
private String string;
private List<Person> data;
public Boolean isBool() {
return bool;
}
public void setBool(Boolean bool) {
this.bool = bool;
}
public String getString() {
return string;
}
public void setString(String string) {
this.string = string;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPojoId() {
return pojoId;
}
public void setPojoId(int pojoId) {
this.pojoId = pojoId;
}
public char[] getOptions() {
return options;
}
public void setOptions(char[] options) {
this.options = options;
}
public String getFunc1() {
return func1;
}
public void setFunc1(String func1) {
this.func1 = func1;
}
public JSONFunction getFunc2() {
return func2;
}
public void setFunc2(JSONFunction func2) {
this.func2 = func2;
}
public Integer getInteger() {
return integer;
}
public void setInteger(Integer integer) {
this.integer = integer;
}
public Boolean getBool() {
return bool;
}
public List<Person> getData() {
return data;
}
public void setData(List<Person> data) {
this.data = data;
}
}
package com.gomt.json.jsonlib;
import java.io.Serializable;
public class Person implements Serializable {
private static final long serialVersionUID = 7699163849016962711L;
private int userId;
private String name;
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
d.) 运行结果
***1*** = [true,false,true]
***2*** = ["first","second"]
***3*** = ["json","is","easy"]
***4*** = {"func":function(i){ return this.arr[i]; },"arr":["a","b"],"int":1,"name":"json","bool":true}
***5*** = {"string":"","integer":0,"func1":function(i){ return this.options[i]; },"data":[],"pojoId":1,"name":"json","bool":false,"options":["a","f"],"func2":function(i){ return this.options[i]; }}
***6*** = json json true = true 1 = 1 2.2 = 2.2 function(a){ return a; } = function(a){ return a; } [1, 2] = [1, 2]
***7*** = true = true 1 = 1 json = json
***8*** = 用户id: 100001 用户名: clarance
***8*** = 用户id: 100002 用户名: peng
***9*** = <?xml version="1.0" encoding="UTF-8"?>
<o null="true"/>
***10*** = <?xml version="1.0" encoding="UTF-8"?>
<o><bool type="boolean">true</bool><int type="number">1</int><name type="string">json</name></o>
***11*** = <?xml version="1.0" encoding="UTF-8"?>
<a><e type="number">1</e><e type="number">2</e><e type="number">3</e></a>
2007-12-7 9:08:29 net.sf.json.xml.XMLSerializer getType
信息: Using default type string
***12*** = [function(i,j){ return matrix[i][j]; }]
- json.rar (1.7 MB)
- 描述: json example
- 下载次数: 1191
评论
3 楼
clarancepeng
2008-06-20
json-lib本身不支持java.util.Date, java.sql.Date, Timestamp,不过通过扩展它提供的接口还是可以用的,可以参照
http://dojotoolkit.org/forum/dojo-core-dojo-0-9/dojo-core-support/json-json-lib-and-date
http://dojotoolkit.org/forum/dojo-core-dojo-0-9/dojo-core-support/json-json-lib-and-date
2 楼
rmn190
2008-06-19
若在Person类里加一个java.util.Date类型的birthday,这样在调用JSONObject的toBean方法时又怎么来处理?
1 楼
clarancepeng
2007-12-07
(2) json-taglib (http://json-taglib.sourceforge.net/examples.html)
它是建立在org.json库的基础上(对应于包里面的atg.taglib.json.util.*),采用jsp的自定义标签,它定义了object,property,array这三种json的类型(没有定义function), 下面是它的官方网站上面的例子.
<%@ taglib prefix="json" uri="http://www.atg.com/taglibs/json" %>
<json:object>
<json:property name="itemCount" value="${cart.itemCount}"/>
<json:property name="subtotal" value="${cart.subtotal}"/>
<json:array name="items" var="item" items="${cart.lineItems}">
<json:object>
<json:property name="title" value="${item.title}"/>
<json:property name="description" value="${item.description}"/>
<json:property name="imageUrl" value="${item.imageUrl"/>
<json:property name="price" value="${item.price}"/>
<json:property name="qty" value="${item.qty}"/>
</json:object>
</json:array>
</json:object>
-----------------------------------------------------
输出结果:
{
itemCount: 2,
subtotal: "$15.50",
items:[
{
title: "The Big Book of Foo",
description: "Bestselling book of Foo by A.N. Other",
imageUrl: "/images/books/12345.gif",
price: "$10.00",
qty: 1
},
{
title: "Javascript Pocket Reference",
description: "Handy pocket-sized reference for the Javascript language",
imageUrl: "/images/books/56789.gif",
price: "$5.50",
qty: 1
}
]
}
-----------------------------------------------------
<%@ taglib prefix="json" uri="http://www.atg.com/taglibs/json" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<json:object>
<json:property name="itemCount" value="${cart.itemCount}"/>
<json:property name="subtotal">
<fmt:formatNumber value="${cart.subtotal}" type="currency" currencyCode="${cart.currency}"/>
</json:property>
<json:array name="items" var="item" items="${cart.lineItems}">
<json:object>
<json:property name="title" value="${item.title}"/>
<json:property name="description" value="${item.description}"/>
<json:property name="imageUrl" value="${item.imageUrl"/>
<json:property name="price">
<fmt:formatNumber value="${item.price}" type="currency" currencyCode="${cart.currency}"/>
</json:property>
<json:property name="qty" value="${item.qty}"/>
</json:object>
</json:array>
</json:object>
它是建立在org.json库的基础上(对应于包里面的atg.taglib.json.util.*),采用jsp的自定义标签,它定义了object,property,array这三种json的类型(没有定义function), 下面是它的官方网站上面的例子.
<%@ taglib prefix="json" uri="http://www.atg.com/taglibs/json" %>
<json:object>
<json:property name="itemCount" value="${cart.itemCount}"/>
<json:property name="subtotal" value="${cart.subtotal}"/>
<json:array name="items" var="item" items="${cart.lineItems}">
<json:object>
<json:property name="title" value="${item.title}"/>
<json:property name="description" value="${item.description}"/>
<json:property name="imageUrl" value="${item.imageUrl"/>
<json:property name="price" value="${item.price}"/>
<json:property name="qty" value="${item.qty}"/>
</json:object>
</json:array>
</json:object>
-----------------------------------------------------
输出结果:
{
itemCount: 2,
subtotal: "$15.50",
items:[
{
title: "The Big Book of Foo",
description: "Bestselling book of Foo by A.N. Other",
imageUrl: "/images/books/12345.gif",
price: "$10.00",
qty: 1
},
{
title: "Javascript Pocket Reference",
description: "Handy pocket-sized reference for the Javascript language",
imageUrl: "/images/books/56789.gif",
price: "$5.50",
qty: 1
}
]
}
-----------------------------------------------------
<%@ taglib prefix="json" uri="http://www.atg.com/taglibs/json" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<json:object>
<json:property name="itemCount" value="${cart.itemCount}"/>
<json:property name="subtotal">
<fmt:formatNumber value="${cart.subtotal}" type="currency" currencyCode="${cart.currency}"/>
</json:property>
<json:array name="items" var="item" items="${cart.lineItems}">
<json:object>
<json:property name="title" value="${item.title}"/>
<json:property name="description" value="${item.description}"/>
<json:property name="imageUrl" value="${item.imageUrl"/>
<json:property name="price">
<fmt:formatNumber value="${item.price}" type="currency" currencyCode="${cart.currency}"/>
</json:property>
<json:property name="qty" value="${item.qty}"/>
</json:object>
</json:array>
</json:object>
发表评论
-
kdb+/q
2008-11-28 20:13 1908因为一个项目接触了kdb+/q, kdb+/q的执行速度应该 ... -
seam随笔
2008-09-28 20:33 1209前段时间,因为客户的一个项目接触了seam,客户那边在 ... -
richfaces换肤
2008-08-27 23:18 0http://leonardinius.blogspot.co ... -
jfree chart...
2008-08-17 11:38 0see attachment. -
crystal report
2008-08-04 21:57 0crystal report http://oceang-y. ... -
js code example
2008-07-01 16:25 0<html> <body> <s ... -
dhtmlgoodies网站上的一些js,也许在工作中用得到
2008-06-23 16:28 1537到http://www.dhtmlgoodies.com ... -
Hibernate的一个例子
2008-05-31 23:32 1092通过hibernate tools的反向工程从数据库产生ent ... -
使用xml或者json方式生成dhtmlxtree
2008-05-14 18:01 68181. dao private static Paramete ... -
在cxf基础上整的一个框架
2008-04-24 08:48 1102使用cxf作为webservice的服务器,以spring b ... -
S60签名
2008-04-16 17:14 1516前段时间写了一个程序,放到S60第三版的手机系统上面老是报权限 ... -
socket消息超时重发的设想
2008-04-08 17:00 4061我们经常遇到的一个问题就是:发送一条消息,若在T秒内没有 ... -
io,nio和操作系统命令性能比较
2008-03-31 20:50 2267package org.clarance; import j ... -
要开始做一个网络的项目了
2008-03-27 22:38 1319一个在线环境监测的项目, 监控中心用java编写,接受现 ... -
使用jQuery解决portal登陆慢的问题
2007-12-19 16:58 2271因为portal中的好几块地方(portlet)取数据比较慢, ... -
使用javascript遍历XML文件并显示
2007-12-10 17:11 6683以下代码在IE和Firefox上测试通过: <html& ... -
使用HttpClient对web应用进行测试
2007-11-29 16:19 2960在几天程序突然报出了数据库连接被管理员销毁的情况! 一时之间也 ... -
判断日期是否有效的正则表达式
2007-09-10 17:59 1244function isValidDate(dateStr, f ... -
取oracle的error code
2007-08-30 15:39 2830有时候需要知道oracle的error code的具体含义, ... -
JFreeChart生成图片并显示
2007-08-28 09:51 3019源代码在附件中, 部署到sevlet容器中, 通过URL访问s ...
相关推荐
在李维的《VCL for Web开发和JSON实战二》一文中,作者深入探讨了如何利用VCL for Web框架结合JSON技术来构建动态的Web应用。这篇文章是系列教程的一部分,重点介绍了如何使用Delphi 2009中的DataSnap和VCLForWeb...
Ajax,全称为Asynchronous JavaScript and XML(异步JavaScript和XML),是一种创建动态网页的技术。在不重新加载整个网页的情况下,Ajax可以向服务器请求新的数据,并更新部分网页内容。这一特性显著提升了用户体验...
### VCL For Web 开发与 JSON 实战 #### 核心知识点概述 1. **VCL For Web**:这是 Delphi 和 C++Builder (BCB) 的 Web 开发框架,旨在帮助开发者创建高效的 Web 应用程序。 2. **JSON(JavaScript Object ...
**JSON技术** JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在OAS项目中,JSON主要应用于: 1. **数据传输**:JavaScript与服务器之间交换的数据通常以JSON格式发送,因为其结构...
在IT行业中,这些技术是构建现代企业级应用的基石,它们涵盖了前端到后端的完整开发流程。...无论是对于初学者还是经验丰富的开发者,这样的实战案例都是提升技能、理解这些技术相互作用的宝贵资源。
帖子中可能会涵盖Action配置、JSON结果类型设置、jQuery AJAX调用等方面的实战指导。 6. **JSONObject - apkeye - ITeye技术网站.mht**:这可能是关于JSONObject类的文档或教程,JSONObject是Java中处理JSON的一种...
JSON-RPC(JavaScript Object Notation Remote Procedure Call)是一种轻量级的远程调用协议,它允许客户端通过HTTP或WebSocket等传输协议与服务器...这是一个良好的起点,帮助你掌握这一高效且灵活的远程调用技术。
7. 实战示例:通过实际代码示例,演示如何使用Ajax发送请求,并将Json数据动态渲染到网页上。 源码文件"一头扎进Ajax&Json视频教程源码.rar"可能包含了与视频教程配合的示例代码,你可以通过学习这些代码加深对Ajax...
在IT行业中,技术实战项目是提升技能和经验的重要途径。这些项目通常涵盖了多个技术领域,旨在帮助开发者将理论知识转化为实际操作能力。"技术实战项目.zip"可能包含一系列的编程练习、案例研究或完整的应用程序开发...
6. **示例与实践**:讲座可能提供了一些实战案例,演示如何在实际项目中使用Delphi的JSON功能,帮助开发者更好地理解和应用所学知识。 7. **性能优化**:对于大规模数据处理,优化JSON解析和序列化速度是重要的。...
在IT领域,尤其是在Web开发中,`bootstrap`、`ajax`、`json`、`spring mvc`、`spring`和`hibernate`是六个非常重要的技术组件,它们共同构建了一个高效、交互性强的Web应用程序。下面我们将逐一探讨这些技术的核心...
【标题】"jsp+ajax+json项目(web)"是一个典型的Web开发实践案例,它将JSP、Ajax和JSON技术融合在一起,展示了如何在实际的Web应用中进行数据的动态交互和更新。该项目旨在帮助初学者理解这三种技术在Web开发中的...
总结起来,这个Java JSON生成工具的主题为我们提供了一个实战性的学习机会,通过比较自编和教师版本的工具,我们可以深化对JSON处理的理解,学习如何评估和选择适合的工具,同时也能提升我们的代码审查和代码优化...
通过以上两种方法,我们不仅可以实现JSON格式的HTTP POST请求的发送,还能灵活选择适合项目需求的技术栈,从而提高开发效率和代码质量。无论是在日常开发还是项目实战中,掌握这些技能都将为你的职业生涯带来巨大...
综上所述,Android Http (Json) 服务器端和客户端通信的实现不仅涉及到Java和Android平台的技术细节,还需要对网络编程、数据格式化、错误处理等方面有深入的理解。掌握了这些知识,开发者就能构建出高效、稳定且...
由于提供的文件信息中并没有具体的Python数据抓取技术与实战内容,我无法生成具体的技术知识点。但是,我可以根据标题“Python数据抓取技术与实战.pdf”来构建一些关于Python数据抓取的基础知识点和实战技巧。 知识...
《Android网络开发技术实战详解》是一本专注于Android平台网络编程的专著,旨在帮助开发者深入理解和实践Android应用程序中的网络通信技术。这本书详细介绍了如何在Android应用中实现各种网络功能,如HTTP请求、数据...