JSON 构造函数显示为未定义

Posted

技术标签:

【中文标题】JSON 构造函数显示为未定义【英文标题】:JSON constructor shown as undefined 【发布时间】:2016-04-20 14:15:53 【问题描述】:

JSONObject 有一个可用的构造函数 JSONObject(String s) 可用,但 eclipse 告诉我它是未定义的。

Documentation

我的代码如下:

URL url = new URL("https://ajax.googleapis.com/ajax/services/search/images?" +"v=1.0&q=barack%20obama&userip=INSERT-USER-IP");

URLConnection connection = url.openConnection();
connection.addRequestProperty("Referer",  "http://google.com");

String line;
StringBuilder builder = new StringBuilder();
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));

while((line = reader.readLine()) != null) 
   builder.append(line);


JSONObject json = new JSONObject(builder.toString()); //Error, undefined

我已经三重检查了我的所有库都是最新和最稳定的,并且正确实施(除了我的构建路径)。

【问题讨论】:

【参考方案1】:

您是否将其添加到构建路径中?

解释如下:

https://***.com/a/8997703/3558900

【讨论】:

我添加了一个不同的库作为库,因此我将其删除并替换为该答案中的库。字符串是 - 我可以实例化 jsonObject 但前提是我通过org.json.JSONObject jsonObject = new org.json.JSONObject(jsonData); 调用它 没关系 - 慢夜,我导入了 org.json.*;它修复了它。【参考方案2】:

我认为这现在应该对你有用.....

URL url = new URL("https://ajax.googleapis.com/ajax/services/search/images?" +"v=1.0&q=barack%20obama&userip=INSERT-USER-IP");

URLConnection connection = url.openConnection();
connection.addRequestProperty("Referer",  "http://google.com");

String line;
StringBuilder builder = new StringBuilder();
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));

while((line = reader.readLine()) != null) 
   builder.append(line);


JSONObject json = new JSONObject(line);
System.out.println(json.toString(4));

您将构建器放入 JSONObject 参数中是错误的......我希望这应该工作......一切顺利

【讨论】:

【参考方案3】:

使用类似这样的代码:

static String jsonData;
File json = new File("JSONFile.json");
FileReader fr=new FileReader(json);
BufferedReader br=new BufferedReader(fr);
StringBuilder sb=  new StringBuilder();
while((jsonData = br.readLine())!=null)

    sb.append(jsonData);

jsonData = sb.toString();
br.close();

JSONObject jsonObject = new JSONObject(jsonData);
System.out.println(jsonObject.toString(4));

尝试使用此代码,因为我得到了结果。

【讨论】:

当我尝试实例化 jsonObject 时,Eclipse 仍然给我“构造函数 JSONObject(String) 未定义”。【参考方案4】:

在maven项目中,我通过在pom.xml中添加依赖https://mvnrepository.com/artifact/org.json/json来修复它,它可以工作,希望对你有用

【讨论】:

以上是关于JSON 构造函数显示为未定义的主要内容,如果未能解决你的问题,请参考以下文章

字面量和构造函数

在 JSON 反序列化期间没有为“System.String”类型定义无参数构造函数

收到“未定义无参数构造函数”错误,不知道为啥

explicit 构造函数

在 Serializable 类的构造函数中定义对象

this.props 在 React 组件中的箭头函数中显示为未定义