生成JSONObject字符串键

时间:2018-12-23 07:34:28

标签: java json eclipse generics compiler-warnings

我有使用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();

但是没有办法用JSONObject键来“生成” String吗?

我发现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泛型不执行任何代码更改

1 个答案:

答案 0 :(得分:1)

您提供的链接答案所使用的类别与您使用的类别不同。如果您查看#include <iostream> #include <SFML/Graphics.hpp> #include <SFML/System.hpp> using namespace sf; int main(){ RenderWindow window(VideoMode(200, 300), "11"); window.display(); return 0; } 的{​​{3}},则会发现以下内容:

org.json.JSONObject

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

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