簡體   English   中英

如何使用“ org.json”包中的類將對象序列化為JSON字符串?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM