更新:2022-11-24 03:21 本文目錄一覽:java怎么把數(shù)據(jù)轉(zhuǎn)成json 數(shù)組有兩種方法實(shí)現(xiàn): (1)直接轉(zhuǎn)換: 創(chuàng)建JSONArray對(duì)象、JSONObject對(duì)象,通過(guò)put方法將其數(shù)據(jù)以鍵值對(duì)的形式填充,如例: //假如有一個(gè)Java實(shí)體類Person,包括以下屬性:phone、sex、married、address。 ArrayListPerson persons = new ArrayListPerson(); for (int i = 0; i 3; i++) { persons.add(new Person("138******67", "女", true, "北京朝陽(yáng)區(qū)"));//填充Java實(shí)體類集合 } JSONArray array = new JSONArray();// Json格式的數(shù)組形式 JSONObject obj;//json格式的單個(gè)對(duì)象形式 for (int i = 0; i persons.size(); i++) { obj = new JSONObject(); //依次填充每一個(gè)Java實(shí)體對(duì)象 try { obj.put("phone", persons.get(i).getPhone());//json通過(guò)put方式以key-value形式填充 obj.put("sex", persons.get(i).getSex()); obj.put("married", persons.get(i).getMarried()); obj.put("address", persons.get(i).getAddress()); array.put(obj);//將JSONObject添加入JSONArray } catch (JSONException e) { e.printStackTrace(); } } (2)通過(guò)GSON工具實(shí)現(xiàn): 只需要?jiǎng)?chuàng)建GSON對(duì)象,通過(guò)toJson方法轉(zhuǎn)換即可。如例: //模擬Java數(shù)據(jù) Person person = new Person("敏敏", 23, "女", "北京市海淀區(qū)"); //創(chuàng)建GSON對(duì)象 Gson gson = new Gson(); //調(diào)用toJson方法即可轉(zhuǎn)換為字符串的json格式 String json = gson.toJson(person); java 中JSON數(shù)據(jù)如何寫(xiě)沒(méi)懂你要問(wèn)什么,是問(wèn)JSON的格式么? 我就簡(jiǎn)單地介紹下json格式: 按照最簡(jiǎn)單的形式,可以用下面這樣的 JSON 表示"名稱 / 值對(duì)": { "firstName": "Tom" } 這個(gè)示例非?;?,而且實(shí)際上比等效的純文本"名稱 / 值對(duì)"占用更多的空間: firstName=Tom 但是,當(dāng)將多個(gè)"名稱 / 值對(duì)"串在一起時(shí),JSON 就會(huì)體現(xiàn)出它的價(jià)值了。首先,可以創(chuàng)建包含多個(gè)"名稱 / 值對(duì)"的 記錄,比如: { "firstName": "Tom", "lastName":"Lin", "email": "aaa@aa.com" } JSON 可以將 JavaScript 對(duì)象中表示的一組數(shù)據(jù)轉(zhuǎn)換為字符串,然后就可以在函數(shù)之間輕松地傳遞這個(gè)字符串,或者在異步應(yīng)用程序中將字符串從 Web 客戶機(jī)傳遞給服務(wù)器端程序。 如何從JSON數(shù)據(jù)創(chuàng)建Java類JSON (JavaScript Object Notation)一種簡(jiǎn)單的數(shù)據(jù)格式,比xml更輕巧。 Json建構(gòu)于兩種結(jié)構(gòu): 1、“名稱/值”對(duì)的集合(A collection of name/value pairs)。不同的語(yǔ)言中,它被理解為對(duì)象(object),紀(jì)錄(record),結(jié)構(gòu)(struct),字典(dictionary),哈希表(hash table),有鍵列表(keyed list),或者關(guān)聯(lián)數(shù)組 (associative array)。 如: { “name”:”jackson”, “age”:100 } 2、值的有序列表(An ordered list of values)。在大部分語(yǔ)言中,它被理解為數(shù)組(array)如: { “students”: [ {“name”:”jackson”,“age”:100}, {“name”:”michael”,”age”:51} ] } 補(bǔ)充:json是做交換格式,查詢效率非常低,如果做存儲(chǔ)的檢索格式就誤用了。 就是說(shuō)“聊天信息的保存用json應(yīng)該可以吧”還不如你之前的mysql數(shù)據(jù)庫(kù)。 json用在客戶端往服務(wù)端發(fā)送的通訊交換數(shù)據(jù)的格式上。服務(wù)端收到后轉(zhuǎn)為數(shù)據(jù)庫(kù)中或內(nèi)存中存放。 java如何創(chuàng)建Json文件?如果聊天數(shù)據(jù)的結(jié)構(gòu)是固定的或變化不大的。 就直接“編排”json字符串。 為要輸出的對(duì)象增加一個(gè)String toJSON()方法 StringBuilder b=new StringBuilder(); b.append("{ name:\""); b.append(username); b.append("\"}"); 依次類推 return b.toString(); 適合絕大多數(shù)情況。 補(bǔ)充:json是做交換格式,查詢效率非常低,如果做存儲(chǔ)的檢索格式就誤用了。 就是說(shuō)“聊天信息的保存用json應(yīng)該可以吧”還不如你之前的mysql數(shù)據(jù)庫(kù)。 json用在客戶端往服務(wù)端發(fā)送的通訊交換數(shù)據(jù)的格式上。服務(wù)端收到后轉(zhuǎn)為數(shù)據(jù)庫(kù)中或內(nèi)存中存放。 如何使用java創(chuàng)建json對(duì)象//將數(shù)據(jù)轉(zhuǎn)換為Json public static String createJsonString(String key, Object value) { JSONObject jsonObject = new JSONObject(); jsonObject.put(key, value); return jsonObject.toString(); } 求java合并json數(shù)據(jù)的代碼我想了一下,但是得有一個(gè)前提,就是第一個(gè)json數(shù)組的size必須和第二個(gè)json數(shù)組的size相同,并且一一對(duì)應(yīng),否則將造成數(shù)組溢出。 如果是基于上面這個(gè)前提,那么實(shí)現(xiàn)的方法就簡(jiǎn)單了。 操作json對(duì)象,其實(shí)標(biāo)準(zhǔn)的方法是將實(shí)體類轉(zhuǎn)換成json后再操作,我這里的話為了便捷直接使用谷歌的Gson來(lái)創(chuàng)建JsonObject了,其他的json依賴還有阿里巴巴的FastJson等等,看你平時(shí)用什么習(xí)慣。 引入Gson依賴: dependency groupIdcom.google.code.gson/groupId artifactIdgson/artifactId version2.8.0/version /dependency 實(shí)現(xiàn)代碼: public class Main { public static void main(String[] args) { JsonArray jsonArray1 = new JsonArray(); JsonObject json11 = new JsonObject(); json11.addProperty("數(shù)據(jù)1", "0000"); json11.addProperty("數(shù)據(jù)2", "1111"); JsonObject json12 = new JsonObject(); json12.addProperty("數(shù)據(jù)1", "0000"); json12.addProperty("數(shù)據(jù)2", "1111"); JsonObject json13 = new JsonObject(); json13.addProperty("數(shù)據(jù)1", "0000"); json13.addProperty("數(shù)據(jù)2", "1111"); jsonArray1.add(json11); jsonArray1.add(json12); jsonArray1.add(json13); System.out.println(jsonArray1); JsonArray jsonArray2 = new JsonArray(); JsonObject json21 = new JsonObject(); json21.addProperty("數(shù)據(jù)3", "6666"); JsonObject json22 = new JsonObject(); json22.addProperty("數(shù)據(jù)3", "6666"); JsonObject json23 = new JsonObject(); json23.addProperty("數(shù)據(jù)3", "6666"); jsonArray2.add(json21); jsonArray2.add(json22); jsonArray2.add(json23); System.out.println(jsonArray2); //遍歷json數(shù)組,按位取出對(duì)象 for (int i = 0; i jsonArray1.size(); i++) { JsonObject json1 = jsonArray1.get(i).getAsJsonObject(); JsonObject json3 = jsonArray2.get(i).getAsJsonObject(); //遍歷數(shù)據(jù)3內(nèi)容,通過(guò)Entry獲取數(shù)據(jù)3的key和value,并合并到數(shù)據(jù)1中 for (Map.EntryString, JsonElement item : json3.entrySet()) { json1.addProperty(item.getKey(), item.getValue().getAsString()); } } System.out.println(jsonArray1); } } 整體思路為:遍歷兩個(gè)json數(shù)組,按位進(jìn)行合并操作。合并時(shí),遍歷數(shù)據(jù)3的jsonObject,獲取其key和value,并將其合并到數(shù)據(jù)1中即可。 運(yùn)行結(jié)果: |
|