关于json插件使用:
在java中,可以通过jsonlib插件,在java对象与json之间做转换。
关于jsonlib插件使用:
1.导包(6个包)
2.将java对象转换成json
1.对于数组,List集合,要想转换成json
JSONArray.fromObject(java对象); ["value1","value2"]
2.对于javaBean,Map
JSONObject.fromObject(javaBean对象); {name1:value1,name2:value2}
对于json数据,它只有两种格式
1.[值1,值2,...] ------>这就是javascript中的数组
2.{name:value,....} ---->就是javascript中的对象。
但是这两种格式可以嵌套.
[{},{},{}]
{name:[],name:[]}
3.如果javaBean中有一个属性,不想生成在json中,怎样处理?
JsonConfig config = new JsonConfig();
config.setExcludes(new String[] { "type" });
JSONArray.fromObject(ps, config).toString();
上述代码就是在生成json时,不将type属性包含.
struts2中json插件使用
1.struts2中怎样处理异步提交(ajax)
原始:
HttpServletResponse response = ServletActionContext.getResponse();
response.getWriter().write("hello " + msg);
response.getWriter().close();
还可以使用struts2中提供的json插件:
1.导入json插件包
在struts2的lib包下 struts2-json-plugin-2.3.15.1.jar。
2.在struts.xml文件中配置
1.<package extends="json-default">
2.设置视图<result type="json">
这样设置后,会将valueStack栈顶数据变成json。
对于我们的程序,也就是会将action对象转换成json。
<param name="root">p</param> 如果没有设置,可以理解成将整个action都转换成json的数据。也就是
在action中提供的getXxx方法,就是json中的一个属性。
如果设置了root,那么,只将指定数据转换成json.
--------------------------------------------------------
怎样设置转换成json的对象中不包含特定的属性?
1. @JSON(serialize=false) 在getXxx方法上设置
2. 还可以通过json插件的interceptor完成.
<param name="includeProperties">ps\[\d+\]\.name,ps\[\d+\]\.price,ps\[\d+\]\.count</param>
/**JavaScript Object Notation
* JSON和JS对象格式一样,只不过JSON字符串的属性名必须加双引号
* JSON分类:
* 1.对象{}
* 2.数组[]
*
* JSON允许的值:
* 1.字符串
* 2.数值
* 3.布尔值
* 4.null
* 5.对象
* 6.数组
*/
//创建一个对象
var obj=‘{"name":"ai","age":18,"gender":"female"}‘;
var arr=‘[1,2,3,"hello",true]‘;
var obj2=‘{"arr":[1,3,4]}‘;
var arr2=‘[{"name":"ai","age":18,"gender":"female"},{"name":"ai","age":18,"gender":"female"}]‘;
//将JSON字符串转换为JS对象
//json-->js
console.log(JSON.parse(obj).name); //ai
console.log(JSON.parse(arr)[2]); //3
//js-->json
console.log(typeof(JSON.stringify(obj))+"----"+JSON.stringify(obj));
//string----"{\"name\":\"ai\",\"age\":18,\"gender\":\"female\"}"