[英]How to serialize object to JSON string using classes from “org.json” package?
我試圖找到任何有用的示例來解決此簡單任務,但是,沒有發現任何真正有用的示例。 我是Java的初學者,我肯定需要幫助。
我有兩個簡單的Java類:
private class FMList {
public List<FMItem> items = new ArrayList();
public long size = 0;
public int dirs = 0;
public int files = 0;
public String path = "";
}
private class FMItem {
public boolean is_dir = false;
public String[] ascii = {};
public String name = "";
public String mode = "";
public long size = 0;
public long mtime = 0;
public boolean ext = false;
public String cache = "";
}
我的應用程序(小程序)創建FMList
的實例,將數據設置為對象屬性,最后將對象序列化為JSON字符串。
首先,我嘗試了Google Gson庫。 簡單的new Gson().toJson(fmList)
完美地完成了這項工作,但是我的applet無法開始給出Gson庫有點像安全性問題的例外。 同時,小程序已簽名並且所有AccessController都已設置。
然后,我嘗試使用JSON官方網站上的類。 不再有例外,但是簡單的new JSONObject(fmList).toString()
僅提供{}
。 我知道應該以其他方式使用它。
使用"org.json"
包中的類將此簡單對象序列化為JSON字符串的正確方法是什么?
謝謝你的幫助!
對於像您正在使用的字段訪問(不是get / set方法),必須指定它們: http : //www.json.org/javadoc/org/json/JSONObject.html#JSONObject(java.lang.Object,java。 lang.String [])
您可以使用JSON Writer或“ Stringer”(寫入流或創建String)來獲取精美的json。
http://www.json.org/javadoc/org/json/JSONWriter.html
http://www.json.org/javadoc/org/json/JSONStringer.html
更新:該類也不能通過簡單的org.json lib私有。 這工作正常:
public class Main {
public static class FMList {
public long size = 0;
public int dirs = 0;
public int files = 0;
public String path = "";
}
public static void main(String[] args) {
System.out.println(new JSONObject(new FMList(), new String[] { "dirs", "files" }).toString());
}
}
產生: {"files":0,"dirs":0}
改用私人課程會產生: {}
JSONObject期望使用getter,但是您的類僅使用公共變量而不是getter:
JSONObject(java.lang.Object bean)
Construct a JSONObject from an Object using bean getters.
http://www.json.org/javadoc/org/json/JSONObject.html#JSONObject(java.lang.Object )
可以理解,您正在專門使用org.json
包進行序列化,但是如果您對其他庫開放,那么Xstream確實很容易用於XML相關任務,例如JSON序列化。 這是JSON教程: http : //x-stream.github.io/json-tutorial.html 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.