Как конвертировать все json файл. Программа для чтения файла JSON - PullRequest
0 голосов
/ 03 апреля 2020

Я пытаюсь преобразовать json файл в объект, он запускается, когда я использую один транс-модуль, но возникает проблема, когда я пытаюсь прочитать два транс-модуля. Программа только для чтения путь json. Я использую JSONParser и JSONObject

        JSONParser jsonParser = new JSONParser();
        JSONObject obj = (JSONObject) jsonParser.parse(new FileReader(args[1]));

        JSONObject transUnit = (JSONObject) obj.get("trans-unit");
        id = (String) transUnit.get("id");
        if (id == null) {
            System.out.println("Id is required parameter!");
            return;
        }
        source = (String) transUnit.get("source");

        JSONObject targetList = (JSONObject) transUnit.get("target");
        if (targetList != null) {
            qualifier = (String) targetList.get("state-qualifier");
            targetText = (String) targetList.get("target-text");
        }
        JSONObject altTransList = (JSONObject) transUnit.get("alt-trans");
        if (altTransList != null) {
            extype = (String) altTransList.get("extype");
            match = (String) altTransList.get("match-quality");
            origin = (String) altTransList.get("origin");
            sourceAlt = (String) altTransList.get("source");
            targetAlt = (String) altTransList.get("target");
        }

Он запускается, когда я читаю json файл ниже

 "trans-unit": {
  "id": "t1",
  "source": "Text text text text",
  "target": {
   "state-qualifier": "exact-match",
   "target-text": "Tekst tekst tekst tekst",
  },
  "alt-trans": {
   "extype": "exact-match",
   "match-quality": "100%",
   "source": "Text text text text",
   "target": "Tekst tekst tekst tekst"
  }
 }
}

Но когда читаю это json:

{
  "trans-unit": {
    "id": "t1",
    "source": "Text text",
    "target": {
      "state-qualifier": "match",
      "target-text": "Tekst tekst"
    },
    "alt-trans": {
      "extype": "match",
      "match-quality": "100%",
      "source": "Text text",
      "target": "Tekst tekst"
    }
  },
  "trans-unit": {
    "id": "t2",
    "source": "Hello there.",
    "target": {
      "state-qualifier": "mt",
      "target-text": "Cześć"
    },
    "alt-trans": {
      "extype": "TRANSLATION",
      "match-quality": "nmt",
      "source": "Hello there.",
      "target": "Cześć"
    }
  }
}

JSON не читает блок trans с идентификатором t1, но читает только блок trans t2.
Я не знаю, в чем проблема. Кто-нибудь может помочь?

1 Ответ

0 голосов
/ 03 апреля 2020

Чего вы действительно хотите достичь?

Я думаю, проблема в том, что вторые данные json являются своего рода List или Array. Таким образом, вы получите только последний «объект».

Вам разрешено использовать любую библиотеку, например, gson? Это сделает это намного проще.

...