java - 无法编译明显相同的源

标签 java json

大家好,我正在开发一个 Restful + JSON servlet,但是如果我尝试用这种方法编译我的项目源代码,我遇到了一个奇怪的问题:

public
static
WipdDBTable
parseJSON(String JSONBody)
{
    JSONObject jsonObj;
    JSONTokener jsonTok;
    Iterator it;
    String[] labels;
    String[][] fields;
    int i;

    try  {
        jsonTok = new JSONTokener(JSONBody);
        jsonObj = new JSONObject(jsonTok);

        labels = new String[jsonObj.length()];
        fields = new String[1][labels.length];

        i = 0;
        it = jsonObj.keys(); 
        while(it.hasNext())  {
            String key = it.next().toString();
            labels[i] = key;
            fields[0][i] = jsonObj.get(key);
            i++;
        }

        return new WipdDBTable(labels, fields);
    } catch(JSONException ex)  {
        return null;
    }
}

我收到此错误:

WipdJSON.java:102: incompatible types
found   : java.lang.Object
required: java.lang.String
                fields[0][i] = jsonObj.get(key);

所以我编写了一个测试类,显然具有相同的源,但是使用这个我没有收到任何错误:

public class jsontest
{
    public static
    void
    main(String[] args)
    {
        String s1;
        JSONObject jsonObj;
        JSONTokener jsonTok;

        s1 = "{\"lo\":\"ol\",\"json\":{\"1\":\"2\"},\"yo\":{\"lol\":\"lol\"}}";

        try  {
            jsonTok = new JSONTokener(s1);
            jsonObj = new JSONObject(jsonTok);

            Iterator it = jsonObj.keys();
            while(it.hasNext())  {
                String key = it.next().toString();
                System.out.print(key + "=>");
                System.out.println(jsonObj.get(key));
            }
        } catch(JSONException ex)  {
            ex.printStackTrace();
        }

    }
}

最佳答案

jsonObj.get(key); 返回一个 Object,如果要获取 String 变量中的值,则需要将其转换为 String。有一个getString JSONObject 类中的方法:

fields[0][i] = jsonObj.getString(key);

并且您的 test 类中不会出现任何错误,因为您仅输出调用 toString() 的值。方法。

关于java - 无法编译明显相同的源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12673482/

相关文章:

java - crc 四个字节将 C 代码转换为 Java 产生意外结果

java - 如何按字符串的最后一点拆分?

ios - 当字典在 iOS 中没有标题时如何解析 JSON?

python - 为什么我的 json 结果包含两个同名的部分?

json - 如何解码可以是字符串 * 或 * 字符串数组的不一致 JSON 字段?

php - 使用Jquery时无法显示返回的JSON

java - 将按钮放置在 GridPane 中的 webView 顶部

java - 动态重新路由 Camel 路线

asp.net - 显示从 json post 调用返回的文本

java - 数字格式异常 - 使用 parseInt 进行转换