简体   繁体   中英

Java return JSONArray

I'm trying to create a jsonarray from a Map in java. I'm passing it in to a javascript variable. But i don't know why the mac and status are blank, any help much appreciated.

what i need:

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

What i am getting with my current code:

[{"12345":{}]

Here is my code,

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;
    }
  }
}

Do you have any limitation on any library? I mean are you using JSON library from http://org.json or which library?

Following is the code that I've tried using JSON library from http://org.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());

    }
}

You can read more about the API here: http://json.org/java/

JsonArray.fromObject -- Creates a JSONArray. Inspects the object type to call the correct JSONArray factory method. Accepts JSON formatted strings, arrays and Collections .

And Map which you are passing is not JSON formatted. So try using add() method on JsonArray Or put() method on JsonObject.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM