3

この簡単なタスクを解決するための有用な例を見つけようとしましたが、実際に役立つものは何も見つかりませんでした. 私はJavaの初心者レベルで、間違いなく助けが必要です。

2 つの単純な 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ライブラリを試してみました。Simplenew Gson().toJson(fmList)は完璧に機能しましたが、私のアプレットは、Gson ライブラリにセキュリティ上の問題があるという例外を与え始めませんでした。その間、アプレットは署名され、すべての AccessController が設定されました。

そこで、JSON公式サイトのクラスを使ってみました。もう例外はありませんが、その単純なものだけがnew JSONObject(fmList).toString()与え{}られます。どういうわけか別の方法で使用する必要があることを理解しています。

"org.json"パッケージのクラスを使用して、この単純なオブジェクトを JSON 文字列にシリアル化する正しい方法は何ですか?

ご協力ありがとう御座います!

4

3 に答える 3

7

(get/set メソッドではなく) 使用しているようなフィールド アクセスの場合は、それらを指定する必要があります: http://www.json.org/javadoc/org/json/JSONObject.html#JSONObject(java.lang.Object, java. lang.String[])

JSON ライターまたは「ストリンガー」(ストリームへの書き込みまたは文字列の作成) を使用して、きれいに印刷された json を取得しないようにします。

http://www.json.org/javadoc/org/json/JSONWriter.html

http://www.json.org/javadoc/org/json/JSONStringer.html

更新: また、単純な org.json ライブラリでクラスをプライベートにすることはできません。これはうまくいきます:

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}

プライベート クラスに変更すると、次のようになります。{}

于 2012-05-20T14:19:59.817 に答える
0

パッケージを使用したシリアル化を特に探していることを理解しましたがorg.json、他のライブラリを開いている場合、XstreamはJSONシリアル化などのXML関連のタスクに非常に簡単に使用できます。JSONチュートリアルは次のとおりです:http://x-stream.github.io/json-tutorial.html

于 2012-05-20T15:02:04.287 に答える
0

JSONObject はゲッターを使用することを想定していますが、クラスはゲッターの代わりにパブリック変数のみを使用しています。

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 )

于 2012-05-20T14:20:27.377 に答える