生成 JSONObject 字符串键

Generify JSONObject string keys

我有使用 org.json.JSONObject 的迭代器

的现有代码
JSONObject obj = new JSONObject();
obj.put("key1", "value1");
obj.put("key2", "value2");
Iterator keys = obj.keys();
...

有编译警告

Iterator is a raw type. References to generic type Iterator<E> should be parameterized

我可以更新到通用版本:

Iterator<?> keys = obj.keys();

但是没有办法用 String 键 "generify" JSONObject 吗?

我找到 this answer 但它的建议没有编译

JSONObject<String,Object> obj=new JSONObject<String,Object>();

编辑

使用 Iterator<String> keys = obj.keys(); 我收到类型安全警告:

Type safety: The expression of type Iterator needs unchecked conversion to conform to Iterator<String>

同样使用 Eclipse Infer 泛型不执行任何代码更改

您提供 link 的答案使用的 class 与您正在使用的答案不同。如果您查看 org.json.JSONObjectsource,您会发现以下内容:

public Iterator<String> keys() {
    return this.keySet().iterator();
}

这意味着您可以编写以下代码:

    JSONObject obj = new JSONObject();
    obj.put("key1", "value1");
    obj.put("key2", "value2");
    Iterator<String> keys = obj.keys();

    while(keys.hasNext()){
        System.out.println(keys.next());
    }

它将生成以下输出:

key1
key2