1

Java で Map から jsonarray を作成しようとしています。私はそれをjavascript変数に渡しています。しかし、なぜMacとステータスが空白なのかわかりません。助けていただければ幸いです。

私が必要なもの:

[{"12345":{"mac":"FFFFFFFF", "status":"ON"}]

現在のコードで得ているもの:

[{"12345":{}]

ここに私のコードがあります、

public class Details {

public JSONArray getResult() {
    return JSONArray.fromObject(this.det);
}
public Map det = new HashMap();

public results() {
   ResultSet rs;
   det.put(rs.getString(1), new NodeDetails(rs.getString(2), rs.getString(3));
}
class NodeDetails {
    public final String MAC;
    public final String status;

    public NodeDetails(final String ma,final String st) {
        this.MAC = ma;
        this.status = st;
    }
  }
}
4

2 に答える 2

2

ライブラリに制限はありますか? http://org.jsonまたはどのライブラリの JSON ライブラリを使用していますか?

以下は、 http://org.jsonの JSON ライブラリを使用して試したコードです。

public class Test {

    public static class NodeDetails {
        public final String MAC;
        public final String status;

        public NodeDetails(final String ma, final String st) {
            this.MAC = ma;
            this.status = st;
        }
    }

    public static void main(String[] args) throws Exception {
        Map<String, NodeDetails> map = new HashMap<String, NodeDetails>();
        // do something with you ResultSet? and populate the map ;)
        map.put("12345", new NodeDetails("FFFFFF", "ON"));

        JSONObject jsonMap = new JSONObject();
        for (Map.Entry<String, NodeDetails> entry : map.entrySet()) {
            JSONObject object = new JSONObject();
            object.put(entry.getValue().MAC, entry.getValue().status);
            jsonMap.put(entry.getKey(), object);
        }

        JSONArray jsonArray = new JSONArray();
        jsonArray.put(jsonMap);

        System.out.println(jsonArray.toString());

    }
}

API の詳細については、http: //json.org/java/を参照してください。

于 2013-07-20T02:58:18.523 に答える
0

JsonArray.fromObject -- JSONArray を作成します。オブジェクト タイプを検査して、正しい JSONArray ファクトリ メソッドを呼び出します。JSON 形式の文字列、配列、および Collections を受け入れます

また、渡すマップは JSON 形式ではありません。したがって、JsonArray で add() メソッドを使用するか、JsonObject で put() メソッドを使用してみてください。

于 2013-07-20T05:42:33.730 に答える