0

In a JSON I need access a key that contains another JSON, how do I access this?
For example , I want to access "6a082df27f9fe4be184d7222b79c2f8a" the id "1401 Pecas Midia Grafica_v2/Whirlpool_LinhaBranca_Positivo_CanaisdeAfinidade_SuperBanner_-"
LinkedHashMap is not possible because it returns me a 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"
      },
    ...
}
]  

My code

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();
}
Himanshu
  • 4,327
  • 16
  • 31
  • 39
Daniela Morais
  • 2,125
  • 7
  • 28
  • 49
  • Can i change this name `1401 Pecas Midia Grafica_v2/Whirlpool_LinhaBranca_Positivo_CanaisdeAfinidade_SuperBanner_-` to another one like `identifier`?? – MChaker May 07 '15 at 18:43
  • Of course, in your case it will be map of Identifier instances, not of maps –  May 07 '15 at 20:54

1 Answers1

0

Assuming that your json file has this structure

[
  {
    "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"
      }
    }
  }
]

Now define three classes:

Identifier 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,...
}

Pecas class:

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

And Data class

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

Then use Gson API to convert your json file example.json to list of Data objects

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

Then access this id 6a082df27f9fe4be184d7222b79c2f8a and output it

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

Output:

This is the id you want to access 6a082df27f9fe4be184d7222b79c2f8a
MChaker
  • 2,610
  • 2
  • 22
  • 38