Чтение данных JSON в Java с помощью репозитория org / json / json / 20171018 - PullRequest
0 голосов
/ 30 октября 2019

Я пытаюсь прочитать файл JSON в своем java-приложении, используя репозиторий org / json / json / 20171018 (http://central.maven.org/maven2/org/json/json/20171018/ -> json-20171018.jar). Мой JSON-файл выглядит следующим образом:

{
  "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 всего файла, затем JSONObject раздела background и затем JSONArray типа matches. Но, к сожалению, я получаю эту ошибку, которая появляется при запуске программы:

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 выглядит следующим образом:

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

Кто-нибудь знает, где моя ошибкаесть

1 Ответ

1 голос
/ 30 октября 2019

Вы переносите объект JSON, возвращаемый getJSONObject("background"), который не нужен.

Попробуйте просто использовать возвращенный объект:

JSONObject jsonContent = new JSONObject(content);
JSONObject jsonBackground = jsonContent.getJSONObject("background");
JSONArray jsonArrayMatches = jsonBackground.getJSONArray("matches");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...