1. java實現復雜的 xml 轉化為 JSON
提供一種方案:xml通過jaxb轉換成java對象,
然後java對象再轉換為json, 都有現成的框架。
2. java 怎樣進行json字元串拼接
一般都是用json解析包去做json的轉換的,例如用Gson,可以把一個對象轉為json字元串,也可以逆向把json字元串轉為對象。
例如:
Map<String,Object>map=newHashMap<String,Object>();
map.put("key01","value01");
map.put("key02","value02");
Stringjson=newGson().toJson(map);
//則json為{"key01":"value01","key02":"value02"}
如果要用手動拼接的話,就拼接成json格式的字元串就可以了,注意"要做轉義
例如:
Stringvalue01="value01";
intvalue02=123;
Stringjson="{"key01":""+value01+"","key02":"+value02+"}";
//列印結果為{"key01":"value01","key02":123}
//注意int值不需要加引號
3. java怎樣進行json字元串拼接
StringBuffer
利用StringBuffer來拼接和截取,如果是拼接字元串強烈建議使用StringBuffer。這樣可以防止內存泄露,否則大量用Str=str1+str2,會造成內存溢出用法如圖。
4. java如何創建Json文件
如果聊天數據的結構是固定的或變化不大的。
就直接「編排」json字元串。
為要輸出的對象增加一個String toJSON()方法
StringBuilder b=new StringBuilder();
b.append("{ name:\"");
b.append(username);
b.append("\"}");
依次類推
return b.toString();
適合絕大多數情況。
補充:json是做交換格式,查詢效率非常低,如果做存儲的檢索格式就誤用了。
就是說「聊天信息的保存用json應該可以吧」還不如你之前的mysql資料庫。
json用在客戶端往服務端發送的通訊交換數據的格式上。服務端收到後轉為資料庫中或內存中存放。
5. java包路徑解析成json
我跟你講一種方式,我剛剛想了一下,你最好是在得到你list數據的時候就開始組裝,這樣是最好的,得到list數據無非是文件遞歸嘛,當遞歸到出口的時候,你就放進去,如果是文件夾也往裡放。
代碼剛寫好了。
importcom.alibaba.fastjson.JSONObject;
importjava.io.File;
importjava.net.URL;
importjava.util.LinkedList;
importjava.util.List;
/**
*@Packagecom.xhxh.
*@Descriptionjsonconvert
*@Authorxiehua
*@Date2019-03-0816:28
*/
publicclassFileDomain{
privateStringname;
privateList<FileDomain>packages=newLinkedList<>();
publicFileDomain(){
}
publicFileDomain(Stringname){
this.name=name;
}
publicList<FileDomain>getPackages(){
returnpackages;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
@Override
publicStringtoString(){
return"FileDomain{"+
"name='"+name+'''+
",packages="+packages+
'}';
}
publicstaticvoidmain(String[]args){
FileDomainfileDomain=newFileDomain("com.xhxh");
fileDomain.readFiles("com.xhxh",fileDomain);
Strings=JSONObject.toJSONString(fileDomain);
System.out.println(s);
}
publicvoidreadFiles(StringscanPackage,FileDomainfileDomain){
URLurl=this.getClass().getClassLoader().getResource(scanPackage.replaceAll("\.","/"));
FileclassDir=newFile(url.getFile());
for(Filefile:
classDir.listFiles()){
if(file.isDirectory()){
FileDomaintemFileDomain=newFileDomain(scanPackage+"."+file.getName());
fileDomain.getPackages().add(temFileDomain);
readFiles(scanPackage+"."+file.getName(),temFileDomain);
}else{
FileDomaintemFileDomain=newFileDomain(scanPackage+"."+file.getName());
fileDomain.getPackages().add(temFileDomain);
}
}
}
}
6. 怎麼用java編寫json文件
先生成map 然後用alibaba的fastjson,附件中的這個包,里頭有你意想不到的API
例如:
Map map = ......;
map的結構和要生成的字元串結構一致就行,你的optionset在map里頭的結構就是一個list
list optionset= new ArrayList();
Map temp = new HashMap();temp.put('set',xxx);temp.put('value',xxx);
list.add(temp);
....有多少個就添加多少,
然後把list添加到最外層的Map對象中;
map.put('optionset',list); key就是json字元中對應的key
拼裝好了map然後就是下一句就搞定了
String josnStr = JSONObject.toJSONString(map);
7. java中怎麼把數據轉換成Json數據
搜json-lib.jar
這個包的例子:
JSONObject obj = new JSONObject();
obj.put("name", "kotomi");
obj.toString();
得到:{"name":"kotomi"}
也可以吧自己定義的實體轉,如
JSONObject.fromObject(xxx);
xxx是你自己定義的實體,他會吧xxx里提供了getter的都轉成json
8. 求java合並json數據的代碼
我想了一下,但是得有一個前提,就是第一個json數組的size必須和第二個json數組的size相同,並且一一對應,否則將造成數組溢出。
如果是基於上面這個前提,那麼實現的方法就簡單了。
操作json對象,其實標準的方法是將實體類轉換成json後再操作,我這里的話為了便捷直接使用谷歌的Gson來創建JsonObject了,其他的json依賴還有阿里巴巴的FastJson等等,看你平時用什麼習慣。
引入Gson依賴:
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.0</version>
</dependency>
實現代碼:
public class Main {
public static void main(String[] args) {
JsonArray jsonArray1 = new JsonArray();
JsonObject json11 = new JsonObject();
json11.addProperty("數據1", "0000");
json11.addProperty("數據2", "1111");
JsonObject json12 = new JsonObject();
json12.addProperty("數據1", "0000");
json12.addProperty("數據2", "1111");
JsonObject json13 = new JsonObject();
json13.addProperty("數據1", "0000");
json13.addProperty("數據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("數據3", "6666");
JsonObject json22 = new JsonObject();
json22.addProperty("數據3", "6666");
JsonObject json23 = new JsonObject();
json23.addProperty("數據3", "6666");
jsonArray2.add(json21);
jsonArray2.add(json22);
jsonArray2.add(json23);
System.out.println(jsonArray2);
//遍歷json數組,按位取出對象
for (int i = 0; i < jsonArray1.size(); i++) {
JsonObject json1 = jsonArray1.get(i).getAsJsonObject();
JsonObject json3 = jsonArray2.get(i).getAsJsonObject();
//遍歷數據3內容,通過Entry獲取數據3的key和value,並合並到數據1中
for (Map.Entry<String, JsonElement> item : json3.entrySet()) {
json1.addProperty(item.getKey(), item.getValue().getAsString());
}
}
System.out.println(jsonArray1);
}
}
整體思路為:遍歷兩個json數組,按位進行合並操作。合並時,遍歷數據3的jsonObject,獲取其key和value,並將其合並到數據1中即可。
運行結果:
9. java組裝復雜的json用什麼包怎麼用
XSTREAM 可以直接把對象轉成json字元串。
具體用法網路很多的。
當然也可以用json-lib 用法如下 user是一個對象
Useruser=newUser();
user.setId("123");
user.setName("JSONServlet");
user.setPassword("JSON");
user.setSay("Hello,iamaservlet!");
JSONObjectjson=newJSONObject();
json.accumulate("success",true);
json.accumulate("user",user);