新聞中心
如何構建json串,并將map轉為jsonObject對象的三種方式(scala)
眾所周知,kafka中存儲的數(shù)據(jù)是經過BASE64加密后的jsonObject,因此從kafka中讀取的數(shù)據(jù)經過base64解碼,得到的是json串,利用JSONObect的方法可以對json串進行解析,拿到對應的數(shù)據(jù)。那么要如何將scala對象或者java對象轉換為JsonObject對象或JSONObject對象呢?(注意:JsonObject對象和JSONObject對象不同,調用的API也不一樣)
網(wǎng)站建設哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、小程序定制開發(fā)、集團企業(yè)網(wǎng)站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了霞山免費建站歡迎大家使用!
三種轉換方式依賴的包源碼都是用JAVA編寫,所以構建Map對象時完全使用java對象,不會發(fā)生錯誤。構建過程如下:
三種將java對象轉換為jsonObject對象的開源包有:
1、google提供的Genson是一個完全的Java和JSON轉換的類庫,提供了全面的數(shù)據(jù)綁定、流操作等。基于Apache 2.0協(xié)議發(fā)布。轉換結果為
JsonObject對象。
使用需要先導入Jar包:import com.google.gson.{Gson, JsonParser}
引入依賴:這里選用版本為:2.2.4,具體版本可以根據(jù)業(yè)務需求選擇。
dependency
groupIdcom.google.code.gson/groupId
artifactIdgson/artifactId
version2.2.4/version
/dependency
2、Fastjson 是一個 Java 庫,可以將 Java 對象轉換為 JSON 格式,當然它也可以將 JSON 字符串轉換為 Java 對象。
導入jar包:import com.alibaba.fastjson.JSON
引入依賴:
dependency
groupIdcom.alibaba/groupId
artifactIdfastjson/artifactId
version1.2.8/version
/dependency
3、net.sf.json-lib方式
導入jar包:import net.sf.json.JSONObject
引入依賴:
dependency
groupIdnet.sf.json-lib/groupId
artifactIdjson-lib-ext-spring/artifactId
version1.0.2/version
/dependency
Java如何快速構造JSON字符串
Google Gson來構造的JSON字符串里面,保留了傳遞參數(shù)key/value的順序;
FastJson沒有保留順序(這個是符合JSON國際標準的,本身沒有錯誤。是SugarCRM REST API有bug,要求傳遞過來的參數(shù)是按照它的順序要求的)。
Google Gson代碼片段:
import com.google.gson.Gson;
...
LinkedHashMap map = new LinkedHashMap();
map.put(f1,xxx);
map.put(f2,xxxx);
map.put(f3,xxxxx);
Gson gson = new Gson();
String json = gson.toJson(map);,,
Alibaba FastJson代碼片段:
import com.alibaba.fastjson.JSONObject;
JSONObject jsonObject = new JSONObject();
jsonObject.put(f1, xxx);
jsonObject.put(f2, xxx);
String json = jsonObject.toJSONString();
求java合并json數(shù)據(jù)的代碼
我想了一下,但是得有一個前提,就是第一個json數(shù)組的size必須和第二個json數(shù)組的size相同,并且一一對應,否則將造成數(shù)組溢出。
如果是基于上面這個前提,那么實現(xiàn)的方法就簡單了。
操作json對象,其實標準的方法是將實體類轉換成json后再操作,我這里的話為了便捷直接使用谷歌的Gson來創(chuàng)建JsonObject了,其他的json依賴還有阿里巴巴的FastJson等等,看你平時用什么習慣。
引入Gson依賴:
dependency
groupIdcom.google.code.gson/groupId
artifactIdgson/artifactId
version2.8.0/version
/dependency
實現(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ù)組,按位取出對象
for (int i = 0; i jsonArray1.size(); i++) {
JsonObject json1 = jsonArray1.get(i).getAsJsonObject();
JsonObject json3 = jsonArray2.get(i).getAsJsonObject();
//遍歷數(shù)據(jù)3內容,通過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);
}
}
整體思路為:遍歷兩個json數(shù)組,按位進行合并操作。合并時,遍歷數(shù)據(jù)3的jsonObject,獲取其key和value,并將其合并到數(shù)據(jù)1中即可。
運行結果:
java如何創(chuàng)建Json文件?
如果聊天數(shù)據(jù)的結構是固定的或變化不大的。
就直接“編排”json字符串。
為要輸出的對象增加一個String toJSON()方法
StringBuilder b=new StringBuilder();
b.append("{ name:\"");
b.append(username);
b.append("\"}");
依次類推
return b.toString();
適合絕大多數(shù)情況。
補充:json是做交換格式,查詢效率非常低,如果做存儲的檢索格式就誤用了。
就是說“聊天信息的保存用json應該可以吧”還不如你之前的mysql數(shù)據(jù)庫。
json用在客戶端往服務端發(fā)送的通訊交換數(shù)據(jù)的格式上。服務端收到后轉為數(shù)據(jù)庫中或內存中存放。
用java生成json文件,怎么編寫?
直接調用類庫里的屬性和方法就行,沒必要自己寫??!你說的源碼是什么意思?
你這個json格式本身就有問題,不符合標準。
本文標題:java代碼構造json java代碼結構設計
文章源于:http://www.dlmjj.cn/article/hppidc.html