Android Json(1) -- Json對象的創建

1. 直接由String生成的json數據

1.1 字符串構建JSONArray

String json="[{'name':'tom','age':12},{'name':'jack','age':13}]";
JSONArray a = new JSONArray(json);
System.out.println(a.toString());

1.2 字符串構建JSONObject

String json2="{'json':[{'name':'tom','age':14},{'name':'jack','age':15}]}";
JSONObject b= new JSONObject(json2);
System.out.println(b.toString());
String類型的數據加“”,然後每個key,value加單引號。

2. 用JSONObject和JSONArray構建

直接調用JSONObject和JSONArray完成構建

JSONArray array = new JSONArray();
JSONObject object = new JSONObject();
JSONObject object1 = new JSONObject();
JSONObject obj= new JSONObject();
try {
    object.put("item1","value1");
    object.put("age",12);
    object.put("name","tom");
    object1.put("item2","value2");
    object1.put("age",12232);
    object1.put("name","tom");
    array.put(object);
    array.put(object1);
    obj.put("name",array);
    System.out.println(obj.toString());
}catch (Exception e){

}

結果:

{"name":[{"item1":"value1","name":"tom","age":12},{"item2":"value2","name":"tom","age":12232}]}
JSONArray array1 =new JSONArray();
JSONObject object2 =new JSONObject();
JSONObject object3 =new JSONObject();
try {
    object2.put("color","red");
    object2.put("height",20);
    object3.put("color","blue");
    object3.put("height",1010);
    array1.put(object2);
    array1.put(object3);
    System.out.println(array1.toString());
}catch (Exception e){

}

結果:

[{"color":"red","height":20},{"color":"blue","height":1010}]

3. 用HashMap構建JSONObject,完成構建json String

Map<String ,String> map =new HashMap<>();
Map<String ,String> map2 =new HashMap<>();
map.put("name1","tom1");
map.put("age1","12");
map2.put("name1","tom1");
map2.put("age1","12");
JSONObject object4 =new JSONObject();
JSONArray array2 =new JSONArray();
array2.put(map);
array2.put(map2);
object4.put("key",array2);
System.out.println(object4.toString());

結果:

{"key":[{"name1":"tom1","age1":"12"},{"name1":"tom1","age1":"12"}]}
Map<String ,String> map1 =new HashMap<>();
map1.put("as","adasd");
map1.put("asfa","afasff");
JSONArray array3 =new JSONArray();
array3.put(map1);
System.out.println(array3.toString());

結果:

[{"asfa":"afasff","as":"adasd"}]

4. 通過java class生成jsonString

4.1 通過java class生成jsonObject

通過Gson生成json
單個對象生成json

生成以下類,該怎麼生成呢?

{
“createDate”: “2015-02-01 10:39:50”,
“id”: “1”,
“name”: “傳說之美”,
“password”: “123456”
}

先定義一個account類,屬性有id、name、password、createDate。

public class Account {
    private String id;
    private String password;
    private String name;
    private String createDate;
    public Account() {
        super();
    }

    public Account(String id, String password, String name, String createDate) {
        super();
        this.id = id;
        this.password = password;
        this.name = name;
        this.createDate = createDate;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getPassword() {
        return password;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getCreateDate() {
        return createDate;
    }

    public void setCreateDate(String createDate) {
        this.createDate = createDate;
    }

    @Override
    public String toString() {
        return "Account [id=" + id + ", password=" + password + ", name=" + name + ", createDate=" + createDate + "]\n\n";
    }

}

定義好這個類,就可以利用Gson生成json字符串了。

// 生成account對象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Account account = new Account("1", "123456", "傳說之美", sdf.format(new Date()));


// 利用gson對象生成json字符串
Gson gson = new Gson();
String jsonString = gson.toJson(account);
        Log.i("", jsonString);

4.1 通過java class生成jsonArray

[
    {
        "id": "2", 
        "createDate": "2015-02-01 11:21:27", 
        "password": "123456", 
        "name": "傳說"
    }, 
    {
        "id": "2", 
        "createDate": "2015-02-01 11:21:27", 
        "password": "123456", 
        "name": "之美"
    }
]

生成json數組代碼如下

Account account2 = new Account("2", "123456", "傳說", sdf.format(new Date()));
Account account3 = new Account("2", "123456", "之美", sdf.format(new Date()));
List<Account> accountList = new ArrayList<Account>();
accountList.add(account2);
accountList.add(account3);

JSONArray accountArray = new JSONArray();
for (int i = 0; i < accountList.size(); i++) {
    String accountStr = gson.toJson(accountList.get(i));
    JSONObject accountObject;
    try {
        accountObject = new JSONObject(accountStr);
        accountArray.put(i, accountObject);
    } catch (JSONException e) {
        e.printStackTrace();
    }
}
Log.i("", accountArray.toString());
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章