Java 如何将json反序列化为字典或keyvaluepair?

Java 如何将json反序列化为字典或keyvaluepair?,java,json,network-programming,Java,Json,Network Programming,我必须像这样反序列化JSON对象 [{"Key":{"id":0, "Name":"an Object"}, "Value":true}, {"Key":{"id":0, "Name":"an Object"}, "Value":true}] 我知道如何反序列化数组和单个对象或变量。但我对字典感到失望 我正在使用以下命令读取数组 NetworkEvent n = (NetworkEvent) evt; byte[] data = (byte[]) n.getMetaData(); AnObj

我必须像这样反序列化JSON对象

[{"Key":{"id":0, "Name":"an Object"}, "Value":true},
{"Key":{"id":0, "Name":"an Object"}, "Value":true}]
我知道如何反序列化数组和单个对象或变量。但我对字典感到失望

我正在使用以下命令读取数组

NetworkEvent n = (NetworkEvent) evt;
byte[] data = (byte[]) n.getMetaData();

AnObject[] anObject= null;
 try {
     JSONArray json = new JSONArray(new String(data, "UTF-8"));
     anObject= AnObject.getAnObjects(json);
 } catch (Exception ex) {
     ex.printStackTrace();
 }    
最终的代码解决方案:

        Object[] objects= new Object[json.length()];
        for (int i = 0; i < json.length(); ++i) {

            Key key= null;
            Value value = null;
            try {
                JSONObject keyValuePair = json.getJSONObject(i);
                key= Key.getKey(keyValuePair.getJSONObject("Key"));
                value= keyValuePair.getBoolean("Value");
            } catch (JSONException ex) {
                ex.printStackTrace();
            }

          Object object= new object();
          object.setKey(key);
          object.setValue(value);

          Objects[i] = object;
        }
        return objects;
Object[]objects=新对象[json.length()];
for(int i=0;i
试试这个库

这里没有JSON对象。它是一个JSON对象数组,因此您当前的代码应该可以工作

我认为你的“问题”在于你使用了错误的术语

这是一个属性或名称/值对:

"id":0
这是一个对象:

{"id":0, "Name":"an Object"}
{"Key":{"id":0, "Name":"an Object"}, "Value":true}
这也是一个对象:

{"id":0, "Name":"an Object"}
{"Key":{"id":0, "Name":"an Object"}, "Value":true}
这是一个(对象的)数组

有关更多详细信息,请参阅。

我正在使用json.org——在项目的这个阶段更改库不是一个选项。但它看起来是个很棒的图书馆