如何转换所有的 JSON 文件。程序读取 JSON 文件的路径。

huangapple go评论82阅读模式
英文:

How to convert all json file. Program read path of JSON file

问题

我尝试将 JSON 文件转换为对象,在使用一个 trans-unit 时可以运行,但在尝试读取两个 trans-unit 时出现问题。程序只读取了 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 只读取了 id 为 "t2" 的 trans-unit,而没有读取 id 为 "t1" 的 trans-unit。我不知道问题出在哪里。有谁能帮忙解决吗?

英文:

I try convert json file to object, it run when i use one trans-unit but appears problem when i try read two trans unit. Program read only path of json. I use JSONParser and 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");
        }

It run, when I read json file below

 "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"
  }
 }
}

But when a read this 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 dont't read trans unit with id t1 but read only tran-unit t2.
I don't know where the problem lies. Can anyone help?

答案1

得分: 0

你真正想要实现什么?

我认为问题是,第二个 JSON 数据有点像列表或数组。
因此,你只会得到最后一个“object”。

你可以使用像 gson 这样的库吗?这将使得处理变得更加容易。

英文:

What do you really want to achieve?

I think the problem is, that the second json data is kind of List or Array.
So you only will get the last "object".

Are you allowed to use any library like gson ? This will make it a lot easier.

huangapple
  • 本文由 发表于 2020年4月3日 20:46:07
  • 转载请务必保留本文链接:https://go.coder-hub.com/61012244.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定