各种语言是怎么封装成json'对象的?这个问题我今天就想仔细查查回到家没事就找找看看,先做一个简单的总结:
首先java语言吧:
String jsondata = "{'a':" + a + ",'b':" + b + ",'c':" + c + "}";
如果abc是字符串就加上单引号,如
String jsondata = "{'a':'" + a + "','b':'" + b + "','c':'" + c + "'}";
如果abc是数组
String jsondata = "{'a':[" + a[0] + "," + a[1] + "," + a[2] + "],'b':...}";
如果abc是对象就相对复杂一点
String jsondata = "{'a':{'a_paramStr':'" + a.paramStr + "','a_pramaInt'}:a.pramaInt},'b':...}";
当然,如果对象的成员变量很多,可以可以通过对象遍历的方式输出,还有包含子对象、子子对象的情况
总结如下
格式:{'数据名':数据值}
数据值为数字时,直接输出
数据值为字符串时,用单引号包含值,'数据值'
数据值为数组时,用中括号包含,[数据值1,数据值2,...]
数据值为对象时,用大括号包含,{'成员名1':成员数值1,'成员名2':{'成员2对象的成员1','成员2对象的成员1值'},...}
数据与数据之间用逗号隔开
如果传送数据很简单可以自己输出;如果很复杂,建议用三方json包吧
java 后台封装json数据
1. List集合转换成json代码
List list = new ArrayList();
list.add( "first" );
list.add( "second" );
JSONArray jsonArray2 = JSONArray.fromObject( list );
2. Map集合转换成json代码
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 json = JSONObject.fromObject(map);
3. Bean转换成json代码
JSONObject jsonObject = JSONObject.fromObject(new JsonBean());
4. 数组转换成json代码
boolean[] boolArray = new boolean[] { true, false, true };
JSONArray jsonArray1 = JSONArray.fromObject(boolArray);
5. 一般数据转换成json代码
JSONArray jsonArray3 = JSONArray.fromObject("['json','is','easy']" );
JSONObject jsonObject = JSONObject.fromObject(message);
getResponse().getWriter().write(jsonObject.toString()); 当把数据转为json后,用如上的方法发送到客户端。前端就可以取得json数据了。 |
ListDate2.setId(examSubject.getId());
ListDate2.setValue(examSubject.getSubjectName());
$("#examName").append("<option value='" + obj.id + "'>"+ obj.value+ "</option>");
});
那么J2EE中使用json数据流程是什么呢?
1 jsp传值至action
2 action中处理jsp传来的值,一番处理之后,处理成json格式的值
3 传回jsp。jsp中可以通过拿到的处理后的数据。通过键值对的形式拿到值。
JSP
$('select[name=classes').change(function(){
var classNum= $('select[name=classes option:selected').val();
$.getJSON(
"stu/stu_toshowStu",
{classNum:classNum},
function(json,status)
{
$.each(json,function(i){
$('#stuDiv').append("<div>学生学号:"+json[i].num+"</div>" );
}
);
});
Action
private String classNum;
public String toshowStu()
{
List<Student> lstStu = stuService.getStuByClassNum(classNum);
this.outputJson(lstStu );
return null;
}
outputJson
protected final void outputJson(Object obj)
{
String outStr = "";
if(obj instanceof String)
outStr = (String)obj;
else
outStr = getJson(obj);
try
{
HttpServletResponse response = ServletActionContext.getResponse();
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
response.getWriter().print(outStr);
}
catch(IOException e)
{
logger.error(e.getMessage(), e);
e.printStackTrace();
}
}
protected final String getJson(Object obj)
{
JsonConfig cfg = jsonCfg();
return JSONArray.fromObject(obj, cfg).toString();
}
private JsonConfig jsonCfg()
{
JsonConfig cfg = new JsonConfig();
cfg.registerJsonValueProcessor(java/util/Date, new JsonValueProcessorImpl());
return cfg;
}
student本身有num这个字段,将数据对象处理成json格式的数据,其中有[{"num":"111","name":"222","address":"江苏"}]等等。
当然,我们肯定要导包啦
使用json-lib的程序jar包下载地址:
http://json-lib.sourceforge.net/
注意各个jar包必不可少,否则报错^_^
JsonTest.java代码如下:
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class JsonTest {
@SuppressWarnings("unchecked")
public static void main(String args[]){
//list集合转换为json代码
List list = new ArrayList();
list.add("girl");
list.add("boy");
JSONArray ja = JSONArray.fromObject(list);
System.out.println(ja);
// Map集合转换成json代码
Map map = new HashMap();
map.put("name", "kava");
map.put("bool", Boolean.TRUE);
map.put("int", new Integer(1));
map.put("array", new String[]{"a","b"});
map.put("func", "function(){return 3;}");
JSONObject jo = JSONObject.fromObject(map);
System.out.println(jo);
//Bean转换成json代码
JSONObject jsonBean = JSONObject.fromObject(new UserBean("kava","shanghai","88765687"));
System.out.println(jsonBean);
//一般数据转换为json代码
JSONArray ja2 = JSONArray.fromObject("['json','shiryu','kava']");
System.out.println(ja2);
//一组beans转换为json代码
List list2 = new ArrayList();
UserBean u1 = new UserBean("shiryu","shanghai","6666");
UserBean u2 = new UserBean("tina","guangzhou","5587");
list2.add(u1);
list2.add(u2);
JSONArray ja3 = JSONArray.fromObject(list2);
System.out.println(ja3);
}
}
UserBean.java代码如下:
public class UserBean {
private String username;
private String city;
private String tel;
public UserBean() {
}
public UserBean(String username,String city,String tel) {
this.username=username;
this.city = city;
this.tel = tel;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
}
最后控制台结果如下:
["girl","boy"]
{"func":function(){return 3;},"int":1,"bool":true,"name":"kava","array":["a","b"]}
{"city":"shanghai","tel":"88765687","username":"kava"}
["json","shiryu","kava"]
[{"city":"shanghai","tel":"6666","username":"shiryu"},{"city":"guangzhou","tel":"5587","username":"tina"}]
也可将json数据转为java数据
<strong><span style="color:#000000;">import net.sf.json.JSONObject;
public class StringToJson {
public static void main(String args[]){
String json = "{name=\"kava\",bool:true,int:1,double:2.2,func:function(a){return a;},array:[1,2]}";
JSONObject jsonObject = JSONObject.fromObject(json);
Object bean = JSONObject.toBean(jsonObject);
String name = jsonObject.getString("name");
System.out.print(name+"--"+bean.toString());
}
}
</span></strong>
js封装json:
JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧。 JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包。
JSON的规则很简单: 对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。
下面通过一些例子对JSON作一些简单的介绍:
一、可以通过Javascript中的eval函数把符合一定格式的字符串转化成JSON对象
<script language="javascript">
function ShowJsonString()
{
response = (
"[{ name: 'Joe', age: '30', gender: 'M'},{ name: 'Chandler', age: '32', gender: 'M'},{ name: 'Rose', age: '31', gender: 'M'}]" //字符串形式
);
var response1 = "({ name: 'Vicson', age: '30', gender: 'M'})"; //字符串形式,这里的小括号不能少
json = eval(response);
json1 = eval(response1);
alert(json[0].name + "," + json[1].age + "," + json[2].gender);
alert(json1.name);
}
ShowJsonString();
</script>
二、直接定义JSON对象
<script language="javascript">
function ShowJsonObject()
{
var user =
{
username:"andy",
"age":20,
"info": { "tel": "25003614", "cellphone": "882"},
"address":
[
{city:"shenzhen","postcode":"0755"},
{"city":"guangzhou","postcode":"020"}
] //address是一个数组
} //对象形式
alert(user.username);
alert(user.age);
alert(user.info.cellphone);
alert(user.address[0].city);
alert(user.address[0].postcode);
}
ShowJsonObject();
</script>
三、对JSON对象的属性进行赋值
<span style="color:#000000;"><script language="javascript">
function SetJsonObject()
{
var user=
{
"username":"andy"
}
user.username = "Tom";
alert(user.username);
}
SetJsonObject();
</script>
</span>
四、通过json.js中的parseJSON方法把字符串转化成JSON对象,
json.js文件包可以在http://www.json.org/json.js中下载
<span style="color:#000000;"><script language="javascript" src="json.js"></script>
<script language="javascript">
function parseJsonEval()
{
var str = '{"name":"Violet", "occupation":"character"}';
var obj = str.parseJSON();
alert(obj.toJSONString());
alert(obj.name);
}
parseJsonEval();
</script></span>
// table 数据的封装
function getTableData() {
var table_data = "[";
var data1 = "";
for (var i = 0; i <ghv_condole_festival_cb.rows.length; i++) {
if($("#ghv_condole_festival_cb tr:eq("+i+") td[name$='staff_name'] input").val()!=null && $("#ghv_condole_festival_cb tr:eq("+i+") td[name$='staff_name'] input").val()!="")
{
data1 = "{";
data1 += "\"staff_name\":\""+yj.str.trim($("#ghv_condole_festival_cb tr:eq("+i+") td[name$='staff_name'] input").val())+"\",";
data1 += "\"staff_hy_id\":\""+yj.str.trim($("#ghv_condole_festival_cb tr:eq("+i+") td[name$='staff_hy_id'] div").text())+"\",";
data1 += "\"serial_no\":\""+(i+1)+"\",";
// data1 += "\"vou_id\":\""+yj.$("id_key").value+"\",";
data1 += "},";
table_data += data1;
}
}
if (table_data != "") {
table_data = table_data.substring(0, table_data.lastIndexOf(","))+"]";
return table_data;
}
return "";
}