gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 15:08:15 25 4
gpt4 key购买 nike

大家好,我正在开发一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com