繁体   English   中英

如何在Java中没有字段名称的情况下获取jsonArray的值?

[英]how to fetch value of jsonArray with no field name in java?

我想从此链接获取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

这样的事情可能会解决问题:

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

这是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);
      }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM