1. 程式人生 > >物件轉換為JSON資料格式&使用JQuery獲取資料

物件轉換為JSON資料格式&使用JQuery獲取資料

將物件轉換為JSON資料格式
      我們需要json-lib-2.3-jdk15.jar架包(當然還需要其它架包),來實現物件轉JSON資料格式。此架包提供兩個類來實現轉換,JSONObject.fromObject(object);將物件轉換成json資料格式;JSONArray.fromObject(object);將陣列轉換成json資料格式。
         注意:在json資料格式中你可能會看到使用{ }與[ ] 包裹的資料,這裡{ }包裹的是物件或者Map物件,而[ ]包裹的則是陣列或List集合。


下面我們來一個例子:
        我們有一個實體類為Users,其中有username屬性和password屬性

public class Users {

    private String username;
    private String password;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Users(String username, String password) {
        this.username = username;
        this.password = password;
    }

    public Users() {
    }
}
下面我們使用程式碼來實現轉換
        Users users = new Users("張三", "q123");

        //將Users物件轉換為JSONObject
        JSONObject jsonObject = JSONObject.fromObject(users);

        //使用JSONObject的toString()方法將JSONObject轉換成字串
        System.out.println( "users:" + jsonObject.toString() );


        List<String> listStr = new ArrayList<String>(0);
        listStr.add("小明");
        listStr.add("小紅");
        JSONArray jsonListStr = JSONArray.fromObject(listStr);
        System.out.println( "jsonListStr:" + jsonListStr.toString() );

        List<Users> listUsers = new ArrayList<Users>(0);
        listUsers.add(new Users("大名", "123"));
        listUsers.add(new Users("大紅", "456"));
        JSONArray jsonListUsers = JSONArray.fromObject(listUsers);
        System.out.println( "jsonListUsers:" + jsonListUsers.toString() );



        Map<String, String> mapStr = new HashMap<String, String>(0);
        mapStr.put("彩虹", "彩彩");
        mapStr.put("豆豆", "小豆");
        JSONObject jsonMapStr = JSONObject.fromObject(mapStr);
        System.out.println( "jsonMapStr:" + jsonMapStr.toString() );


        Map<String, Users> mapUser = new HashMap<String, Users>(0);
        mapUser.put("1", new Users("小彩虹", "123"));
        mapUser.put("2", new Users("小豆豆", "123"));
        JSONObject jsonMapUser = JSONObject.fromObject(mapUser);
        System.out.println( "jsonMapUser:" + jsonMapUser.toString() );
注意:請看好是用那種方式轉換的

輸出結果
users:{"password":"q123","username":"張三"}
jsonListStr:["小明","小紅"]
jsonListUsers:[{"password":"123","username":"大名"},{"password":"456","username":"大紅"}]
jsonMapStr:{"彩虹":"彩彩","豆豆":"小豆"}
jsonMapUser:{"1":{"password":"123","username":"小彩虹"},"2":{"password":"123","username":"小豆豆"}}
上面解釋兩個輸出
  1.jsonListUsers:說明list集合中包含兩個物件
  2.jsonMapUser:Map集合是按物件形式輸出的,我們可以將鍵看成是物件中的屬性。

注:
   在返回json資料的時候要注意,如果你是直接寫成這樣是不行

        response.getWriter().print(jsonListStr.toString());
        response.getWriter().print(jsonListUsers.toString());
        response.getWriter().print(jsonMapStr.toString());
        response.getWriter().print(jsonMapUser.toString());
這樣的話無法在前臺中獲取資料(我這樣是不行的),對於這種情況有兩種解決方案
第一種:

        String test = "[" + jsonListStr.toString() + "," +
                jsonListUsers.toString() + ","+
                jsonMapStr.toString() + "," + jsonMapUser.toString() + "]";
手動拼接成一個數字,取值使用下標取,取出來的值是物件還是陣列,這取決於你的值。

第二種:
        Map<String, Object> result = new HashMap<String, Object>(0);
        result.put("jsonListStr", jsonListStr);
        result.put("jsonListUsers", jsonListUsers);
        result.put("jsonMapStr", jsonMapStr);
        result.put("jsonMapUser", jsonMapUser);
        result.put("users", jsonObject);

        JSONObject jsonResult = JSONObject.fromObject(result);
        System.out.print(jsonResult.toString());
        response.getWriter().print(jsonResult.toString());
這種方式是建立了一個Map集合把資料都放進集合中,然後將集合轉換成json物件,取值的時候需要通過鍵來取值,取出來的值是物件還是陣列,這取決於你的值。

重點注意:JSON是物件

      我用的是谷歌瀏覽器,按F12可以進入除錯介面,當我們返回的JSON格式正確&你設定的dataType為json的時候會顯示如下資訊,這說明正確。

       當我們沒有設定dataType屬性,或屬性設定錯誤會出現或不出現如下介面(說白了就是給你一個字串),這說明是錯誤的

如果一直獲取不到資料,大家需要注意一下這裡。

下面我們使用jquery在jsp頁面輸出這些值
<script>

  $(function () {
    $.ajax({
      type:"POST",
      dataType:"JSON",
      url:"/jsonServlet",
      success:function(data){

        var text = "獲取jsonListStr下的所有元素<br/>";//用來儲存輸出資訊

        for(var key in data.jsonListStr){
          text += data.jsonListStr[key] + "<br/>";
        }

        text += "<br/>獲取jsonListUsers下的所有元素<br/>";
        for(var key in data.jsonListUsers){
          text += "username" + data.jsonListUsers[key].username + "password" + data.jsonListUsers[key].password + "<br/>";
        }

        text += "<br/>獲取jsonMapStr下的所有元素,因為是Map集合所以要通過鍵來獲取值<br/>";
        for(var key in data.jsonMapStr){
          text += data.jsonMapStr[key] + "<br/>";
        }

        text += "<br/>獲取jsonMapUser下的所有元素,因為是Map集合所以要通過鍵來獲取值<br/>";
        for(var key in data.jsonMapUser){
          text += "username" + data.jsonMapUser[key].username + "password" + data.jsonMapUser[key].password + "<br/>";
        }

        text += "<br/>獲取users下的所有元素,因為是Map集合所以要通過鍵來獲取值<br/>";
        text += "username" + data.users.username + "<br/>";
        text += "password" + data.users.password + "<br/>";


        $("#json_info").html(text);
      }
    });
  });


</script>
輸出結果
獲取jsonListStr下的所有元素
小明
小紅

獲取jsonListUsers下的所有元素
username大名password123
username大紅password456

獲取jsonMapStr下的所有元素,因為是Map集合所以要通過鍵來獲取值
彩彩
小豆

獲取jsonMapUser下的所有元素,因為是Map集合所以要通過鍵來獲取值
username小彩虹password123
username小豆豆password123

獲取users下的所有元素,因為是Map集合所以要通過鍵來獲取值
username張三
passwordq123


javascript變數轉JSON

如果在javascript中自己定義了一個json資料
如:var json = '{"1":{"password":"123","username":"小彩虹"},"2":{"password":"123","username":"小豆豆"}}';
則需要使用
var parse = $.parseJSON(json);方法來將json變數中的值轉換成JSON物件,因為不適用此方法,json變數中存在的值為字串。

此筆記程式碼
http://download.csdn.net/detail/gxy1317/9619516



相關推薦

物件轉換JSON資料格式&使用JQuery獲取資料

將物件轉換為JSON資料格式      我們需要json-lib-2.3-jdk15.jar架包(當然還需要其它架包),來實現物件轉JSON資料格式。此架包提供兩個類來實現轉換,JSONObject.fromObject(object);將物件轉換成json資料格式;JSO

JAVA物件轉換JSON及日期格式轉換處理

預設JSON對DATE型別會轉換成一個多屬性物件, 而不是單獨的一個字串, 在某些應用處理上不是很方便,  可以利用JsonValueProcessor來實現日期的轉換. 方法: 1.增加一個DateJsonValueProcessor類,如下: import java.te

JAVA物件轉換JSON時日期格式轉換處理

PS→無奈:受思深處宜先退,得意濃時便可休。 今天在返回json物件到前端時發現前端接收到的資料裡面的時間格式被拆開了,原因如下:         預設JSON對DATE型別會轉換成一個多屬性物件, 而不是單獨的一個字串, 在某些應用處理上不是很方便,  可以利用Js

java將list物件轉換json字串資料顯示空的資訊

1、首先是一個main 方法 public static void main(String[] args){ List l=new ArrayList(); ImageInfo a=

C#——物件轉換JSON格式的字串

問題來源 這幾日正值伏天,我發現成都不是下大雨就是烈日炎炎的天氣。七月上旬車子也壞掉了,去南門體育管健身房要走20來分鐘,再回到研究院大樓又是20多分鐘,一路上不是大雨就是烈日,還好鍛鍊後多巴胺讓我持續維持一天極好的心情。實驗室實在涼快,下面趁著休息總結一下今天所學——我們

android將物件轉換json格式

前面說了是使用java將物件轉換為json格式的字串! 但是將上面的文章的方法寫在android專案中卻出現錯誤!好像是因為匯入的包出現問題!好像是包有衝突! 後來通過問別人才知道要用谷歌的jar包! 可以百度gson網上也有例子! Gson gson2=new Gson

在SSH框架中,多個持久層物件相互引用,從而引發分頁查詢中,查詢所得的持久化物件轉換JSON字串報錯的原因及解決方案

引言: 使用EasyUI框架的小夥伴們都知道,在使用datagrid(資料表格)時,會傳入如一個URL,用於請求資料表格中的所顯示的資料: <!--建立一個空表格--> <table id="mytable"></table>

Java物件轉換JSON

import java.lang.reflect.Array; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Collection; import java.util.List; i

將Java物件轉換Json物件

JSONObject json = JSONObject.fromObject(userInfo);//將java物件轉換為json物件 String str = json.toString();//將

fasterxml.jackson 將物件轉換json報錯處理

最近在做查詢的資料遇到如下報錯: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class org.hibernate.proxy.pojo.javassist.Jav

xml檔案內容轉換Json格式寫法的例子

1、xml的內容 <user> <name>fannie</name> <age>18</age> <address> <city name="shanghai"/> <area na

Java伺服器端List物件轉換JSON物件並返回客戶端例項

一、什麼是JSON   JSON 即 JavaScript Object Natation(Java物件表示法),它是一種輕量級的資料交換格式,非常適合於伺服器與 JavaScript 的互動。   簡而言之,JSON就是JavaScript交換資料的一種格式。例子如下: {"username":"cool

通過Ajax技術,將陣列型別資料轉換JSON格式物件

一、在伺服器端將list型別資料放入JSON物件中的方法  tjyjList=PxcscjbDAO.getTjyjList(pxcscjbQOMap);  //生成JSON物件,用來容納獲得的樣卷陣列  JSONObject jsonObject=new JSONObjec

js 將json字串轉換json物件的方法解析(簡單處理JSON語法格式校驗問題)

js 將json字串轉換為json物件的方法解析 將json字串轉換為json物件的方法。在資料傳輸過程中,json是以文字,即字串的形式傳遞的,而JS操作的是JSON物件,所以,JSON物件和JSON字串之間的相互轉換是關鍵 例如: JSON字串: var str1 = ‘{

字串轉換JSON物件資料精度丟失

字串轉換為JSON物件,資料精度丟失 今天在專案開發中發現了資料提交後臺處理後,精度改變問題。在一陣除錯後,發現是JSON轉換出了問題。需求是匯入一個excel表格,然後顯示內容,最後存到資料庫中。讀入表格時內容顯示:![正確資料](https://img-blog.csdn.net/20

前端頁面中把form表單中的資料轉換json格式

$.fn.serializeJson=function(){               var serializeObj={};               var array=this.serializeArray();               var str=th

vue慕課網音樂專案手記:32-如何獲取歌詞的資料,並解析jsonp的格式json格式

首先:在qq音樂的官網,能看到如下的歌詞資料這是一個jsonp的資料,但是官方對它做了一些加密,所以還是要通過node去強制改變請求頭。新建一個song.jsimport { commonParams } from './config' import axios from '

json格式資料,將資料庫中查詢的結果轉換json, 然後呼叫介面的方式返回json(方式一)

呼叫介面,無非也就是開啟連結 讀取流 將結果以流的形式輸出 將查詢結果以json返回,無非就是將查詢到的結果轉換成jsonObject ============================================================= /***     * 將從資料中取到的結果以jso

資料轉換json格式程式碼

本文資料轉json格式的入門程式碼,建立java檔案即可 用於將實體資訊封裝成json格式資料 使用工具:myeclipse 匯入包gson.jar 專案結構: SchoolInfo.java p

php物件陣列轉換json格式陣列,再轉回object物件陣列

$list為資料庫獲取的物件陣列, $json_encode($obj0) 對$obj0進行json編碼 $arr=json_decode( json_encode($obj0), true ); 轉換為陣列 $list[$i]=$arr= (object) $arr;//