首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用org/ JSON /json/20171018存储库在Java中读取json数据

使用org/ JSON /json/20171018存储库在Java中读取json数据
EN

Stack Overflow用户
提问于 2019-10-30 20:51:08
回答 1查看 2.8K关注 0票数 0

我试图使用org/ JSON /json/20171018存储库(http://central.maven.org/maven2/org/json/json/20171018/ -> json-20171018.jar)在我的java应用程序中读取一个json文件。我的JSON文件如下所示:

代码语言:javascript
复制
{
  "manifest_version": 2,
  "name": "Chrome Extension",
  "version": "0.1",
   "permissions": [
    "tabs"
  ],
  "content_scripts": [
    {
      "matches": [
       "<all_urls>"
      ],
      "js": ["content.js"]
    }
  ],
  "background": {
          "matches": [
              "google.de",
              "youtube.com",
              "wikipedia.de"
          ],
          "scripts": ["background.js"],
          "persistent": true
  }
}

我对background一节感兴趣,更具体的是background matches到的链接。因此,我首先创建了整个文件的JSONObject,然后创建了background部分的JSONObject,然后创建了类型为matchesJSONArray。但不幸的是,我在运行程序时出现了这个错误:

代码语言:javascript
复制
Exception in thread "main" org.json.JSONException: JSONObject["matches"] not found.
    at org.json.JSONObject.get(JSONObject.java:520)
    at org.json.JSONObject.getJSONArray(JSONObject.java:714)
    at Json.main(Json.java:19)

我的java代码如下所示:

代码语言:javascript
复制
import org.json.JSONArray;
import org.json.JSONObject;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

public class Json {
    public static void main(String[] args){
        String loc = new String("chromeAdon/manifest.json");
        File file = new File(loc);
        try {
            String content = new String(Files.readAllBytes(Paths.get(file.toURI())));
            JSONObject json = new JSONObject(content);
            JSONObject json2 = new JSONObject(json.getJSONObject("background"));
            JSONArray jarray = json2.getJSONArray("matches");
            for (int i=0;i<jarray.length();i++){
                System.out.println(jarray.getString(0));
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

有人知道我的错误在哪里吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-30 20:54:55

您正在包装getJSONObject("background")返回的JSON对象,这是不需要的。

只需使用返回的对象:

代码语言:javascript
复制
JSONObject jsonContent = new JSONObject(content);
JSONObject jsonBackground = jsonContent.getJSONObject("background");
JSONArray jsonArrayMatches = jsonBackground.getJSONArray("matches");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58633466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档