如何访问一个 json 插入另一个 json?

How to access one json inserted into another json?

在 JSON 中,我需要访问包含另一个 JSON 的密钥,我该如何访问它?
例如,我想访问 "6a082df27f9fe4be184d7222b79c2f8a" ID“1401 Pecas Midia Grafica_v2/Whirlpool_LinhaBranca_Positivo_CanaisdeAfinidade_SuperBanner_-”
LinkedHashMap 不可能 因为它 returns 我 1401 Pecas Midia Grafica_v2/Whirlpool_LinhaBranca_Positivo_CanaisdeAfinidade_SuperBanner_-={id=9843da8e02604ae0c048b2cfb6009c7d, path=p-554b9ef1e4b0c4105adacb2b/conteudo/08039a5f3ea1924ed7950bc0caf434a2.swf, nome=Whirlpool_LinhaBranca_Positivo_CanaisdeAfinidade_SuperBanner_-.swf, pathOriginal=1401 Pecas Midia Grafica_v2/Whirlpool_LinhaBranca_Positivo_CanaisdeAfinidade_SuperBanner_-.swf, imagem=p-554b9ef1e4b0c4105adacb2b/conteudo/d8c6b07bebf7df2c894c6b6ddaa35bbb.gif}

JSON

[
  {
    "permalink": "c8635076fa371e7642e6e284cc9b60dc",
    "pecas": {
      "1401 Pecas Midia Grafica_v2/Whirlpool_LinhaBranca_Positivo_CanaisdeAfinidade_SuperBanner_-": {
        "id": "6a082df27f9fe4be184d7222b79c2f8a",
        "path": "p-554ba68ce4b04befa5148ae4/conteudo/08039a5f3ea1924ed7950bc0caf434a2.swf",
        "nome": "Whirlpool_LinhaBranca_Positivo_CanaisdeAfinidade_SuperBanner_-.swf",
        "pathOriginal": "1401 Pecas Midia Grafica_v2/Whirlpool_LinhaBranca_Positivo_CanaisdeAfinidade_SuperBanner_-.swf",
        "imagem": "p-554ba68ce4b04befa5148ae4/conteudo/d8c6b07bebf7df2c894c6b6ddaa35bbb.gif"
      },
    ...
}
]  

我的代码

public BasicDBList addComment(String validacaoId, String permalinkId, String pecaId) {
        Validacao getValidacao = validacaoDAO.findById(validacaoId);
        BasicDBObject permalink = permalinkDAO.getPermalinks(validacaoId, permalinkId);
        LinkedHashMap pecas = (LinkedHashMap) permalink.get("pecas");
        if (getValidacao == null || permalink.isEmpty()) {
            Log.error(this, "Erro ao adicionar comentário: Id da validação ou permalink inválido.");
            throw new NotFoundException("Erro ao adicionar comentário.");
        }
        Set entrySet = pecas.entrySet();
        Iterator it = entrySet.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }
    throw new NotImplementedException();
}

假设您的 json 文件具有此结构

[
  {
    "permalink": "c8635076fa371e7642e6e284cc9b60dc",
    "pecas": {
      "1401 Pecas Midia Grafica_v2/Whirlpool_LinhaBranca_Positivo_CanaisdeAfinidade_SuperBanner_-": {
        "id": "6a082df27f9fe4be184d7222b79c2f8a",
        "path": "p-554ba68ce4b04befa5148ae4/conteudo/08039a5f3ea1924ed7950bc0caf434a2.swf",
        "nome": "Whirlpool_LinhaBranca_Positivo_CanaisdeAfinidade_SuperBanner_-.swf",
        "pathOriginal": "1401 Pecas Midia Grafica_v2/Whirlpool_LinhaBranca_Positivo_CanaisdeAfinidade_SuperBanner_-.swf",
        "imagem": "p-554ba68ce4b04befa5148ae4/conteudo/d8c6b07bebf7df2c894c6b6ddaa35bbb.gif"
      }
    }
  }
]

现在定义三个classes:

标识符class:

class Identifier {
    String id;
    String path;
    String nome;
    String pathOriginal;
    String imagem;

    @Override
    public String toString() {
        return "[ " + id + " , " + path + " , " + nome + " , " + pathOriginal
                + " , " + imagem + " ]";
    }
    // getters, setters,...
}

佩卡斯class:

class Pecas {
    @SerializedName("1401 Pecas Midia Grafica_v2/Whirlpool_LinhaBranca_Positivo_CanaisdeAfinidade_SuperBanner_-") 
    Identifier identifier;
    // getters and setters
}

和数据class

class Data {
    String permalink;
    Pecas pecas;
    // getters and setters
}

然后使用 Gson API 将您的 json 文件 example.json 转换为 Data 对象列表

Gson gson = new Gson();
List<Data> list = gson.fromJson(new BufferedReader(new FileReader(
        "example.json")), new TypeToken<List<Data>>() {
}.getType());

然后访问这个id6a082df27f9fe4be184d7222b79c2f8a并输出

String id = list.get(0).getPecas().getIdentifier().getId();
System.out.println("This is the id you want to access "+id);

输出:

This is the id you want to access 6a082df27f9fe4be184d7222b79c2f8a