我想从此link
获取JSON数组值jsonArray格式如下
["bulgari",["bulgaria","bulgari aqua","bulgarian","bvlgari man","bulgarian yogurt","bvlgari ring","bulgaria cup","bulgari bali","bvlgari man in black","bvlgari aqva","bvlgari omnia","bulgari hotel","bulgarian yoghurt","bvlgari pour homme","bvlgari rose","bulgaria u19","bulgaria vs kosovo","bulgaria first professional football league playoff","bulgarian journal of agricultural science","bulgaria negara miskin"],["","","","","","","","","","","","","","","","","","","",""],[],{"google:clientdata":{"bpc":false,"tlw":false},"google:suggestrelevance":[750,601,600,566,565,564,563,562,561,560,559,558,557,556,555,554,553,552,551,550],"google:suggesttype":["QUERY","QUERY","QUERY","QUERY","QUERY","QUERY","QUERY","QUERY","QUERY","QUERY","QUERY","QUERY","QUERY","QUERY","QUERY","QUERY","QUERY","QUERY","QUERY","QUERY"],"google:verbatimrelevance":1300}]
我希望结果是像这样获取值
bulgaria,bulgari aqua,bulgarian,bvlgari man,bulgarian yogurt,bvlgari ring,bulgaria cup,bulgari bali,bvlgari man in black,bvlgari aqva,bvlgari omnia,bulgari hotel,bulgarian yoghurt,bvlgari pour homme,bvlgari rose,bulgaria u19,bulgaria vs kosovo,bulgaria first professional football league playoff,bulgarian journal of agricultural science,bulgaria negara miskin
这是我尝试过的
String sURL = "http://suggestqueries.google.com/complete/search?q=bulgari&client=chrome"; //just a string
JSONArray json = new JSONArray();
// Connect to the URL using java's native library
URL url = new URL(sURL);
URLConnection request = url.openConnection();
request.connect();
JSONArray values = json.getJSONArray(0);
for (int i = 0; i < json.length(); i++) {
JSONObject item = values.getJSONObject(i);
System.out.println(item);
}
但是结果显示了这样的错误消息
cd C:\Users\LENOVO\Documents\NetBeansProjects\testAPI; "JAVA_HOME=C:\\Program Files\\Java\\jdk-12" cmd /c "\"\"C:\\Users\\LENOVO\\Downloads\\netbeans\\java\\maven\\bin\\mvn.cmd\" -Dexec.args=\"-classpath %classpath com.mycompany.testapi.testAPI\" -Dexec.executable=\"C:\\Program Files\\Java\\jdk-12\\bin\\java.exe\" -Dexec.classpathScope=runtime -Dmaven.ext.class.path=C:\\Users\\LENOVO\\Downloads\\netbeans\\java\\maven-nblib\\netbeans-eventspy.jar -Dfile.encoding=UTF-8 org.codehaus.mojo:exec-maven-plugin:1.5.0:exec\""
Running NetBeans Compile On Save execution. Phase execution is skipped and output directories of dependency projects (with Compile on Save turned on) will be used instead of their jar artifacts.
Scanning for projects...
------------------------------------------------------------------------
Building testAPI 1.0-SNAPSHOT
------------------------------------------------------------------------
--- exec-maven-plugin:1.5.0:exec (default-cli) @ testAPI ---
Exception in thread "main" org.json.JSONException: JSONArray[0] not found.
at org.json.JSONArray.get(JSONArray.java:218)
at org.json.JSONArray.getJSONArray(JSONArray.java:405)
at com.mycompany.testapi.testAPI.main(testAPI.java:87)
Command execution failed.
org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1)
at org.apache.commons.exec.DefaultExecutor.executeInternal(DefaultExecutor.java:404)
at org.apache.commons.exec.DefaultExecutor.execute(DefaultExecutor.java:166)
at org.codehaus.mojo.exec.ExecMojo.executeCommandLine(ExecMojo.java:764)
at org.codehaus.mojo.exec.ExecMojo.executeCommandLine(ExecMojo.java:711)
at org.codehaus.mojo.exec.ExecMojo.execute(ExecMojo.java:289)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:567)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
------------------------------------------------------------------------
BUILD FAILURE
------------------------------------------------------------------------
Total time: 1.796 s
Finished at: 2019-07-08T09:41:51+07:00
Final Memory: 7M/30M
------------------------------------------------------------------------
Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.5.0:exec (default-cli) on project testAPI: Command execution failed. Process exited with an error: 1 (Exit value: 1) -> [Help 1]
To see the full stack trace of the errors, re-run Maven with the -e switch.
Re-run Maven using the -X switch to enable full debug logging.
For more information about the errors and possible solutions, please read the following articles:
[Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
注意: *我正在使用jdk 11和netbeans IDE 11.0
答案 0 :(得分:0)
类似这样的方法可能会解决问题:
String sURL = "http://suggestqueries.google.com/complete/search?q=bulgari&client=chrome"; //just a string
InputStream is = new URL(sURL).openStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
StringBuilder sb = new StringBuilder();
int cp;
while ((cp = rd.read()) != -1) {
sb.append((char) cp);
}
JSONArray jsonArray = new JSONArray(sb.toString());
JSONArray myData = jsonArray.getJSONArray(1);
for (int i = 0; i < myData.length(); i++) {
System.out.println(myData.getString(i));
}
答案 1 :(得分:0)
这是JSON-P API的示例(请参阅参考资料)。
try (var stream = new URL(sURL).openStream())
{
var reader = Json.createReader(stream);
var array = reader.readArray();
System.out.println(array.toString());
}
catch (IOException ex)
{
// log exception here
ex.printStackTrace(System.err);
}