关闭

各种语言是怎么封装成json'对象的?

标签: json对象
417人阅读 评论(0) 收藏 举报
分类:


各种语言是怎么封装成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']" );

 

在你的应用中加入json-lib包...用法如上
 
 
JSONObject jsonObject = JSONObject.fromObject(message);
getResponse().getWriter().write(jsonObject.toString());

当把数据转为json后,用如上的方法发送到客户端。前端就可以取得json数据了。
 
 
也可以用
     List  list1 = new ArrayList<ListDate>()
     ListDate ListDate2 = new ListDate();
     ListDate2.setId(examSubject.getId());
     ListDate2.setValue(examSubject.getSubjectName());
   list1.add(ListDate2);    
 
JSONArray jsonArray1 = JSONArray.fromObject(list1);
 
前台循环取
$.each(date, function(i, obj) {
           $("#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 "";

}






0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:291362次
    • 积分:5109
    • 等级:
    • 排名:第5693名
    • 原创:226篇
    • 转载:52篇
    • 译文:2篇
    • 评论:16条
    最新评论