2015-05-06 3 views
0

Я пытаюсь десериализовать эту строку JSON в проекте Android, но у меня нет опыта в этом.Как я могу десериализовать эту строку json с помощью gson?

{"nodes":[{"node":{"title":"esesese", "body":"hey world whatup"}}, {"node":{"title":"Asdasd", "body":"asdefasdefe"}}]} 

Я пытался сделать что-то вроде этого, но это не будет работать:

public class Nodes {  
    public Node[] nodes; 
} 

public class Node { 
    public String title; 
    public String body; 
} 

С помощью этого кода:

Nodes articles = new Gson().fromJson(result, Nodes.class); 
+0

Ответ на сообщение, похоже, соответствует вашей проблеме. Я просто хочу добавить, что ваш Json, кажется, плохо разработан - в его дереве есть ненужный уровень. – piotrpo

+0

Это не мой полный json печально: S – masm64

+0

, и я не тот, кто его проектирует, у него есть лишний слой. Мне нужно работать с ним: S – masm64

ответ

0

следующие работы:

public static class Nodes { 
    private List<NodeWrapper> nodes; 

    public List<NodeWrapper> getNodes() { 
     return nodes; 
    } 

    public void setNodes(List<NodeWrapper> nodes) { 
     this.nodes = nodes; 
    } 
} 

public static class Node { 
    private String title; 
    private String body; 

    public void setTitle(String title) { 
     this.title = title; 
    } 

    public String getTitle() { return title; } 

    public void setBody(String body) { this.body = body; } 

    public String getBody() { return body; } 
} 


public static class NodeWrapper { 
    private Node node; 

    public Node getNode() { return node; } 

    public void setNode(Node node) { this.node = node; } 
} 

Затем сделайте

Nodes nodes = new Gson().fromJson(result, Nodes.class); 

Я попробовал его с этим:

Nodes nodes = new Gson().fromJson("{\"nodes\":[{\"node\":{\"title\":\"esesese\", \"body\":\"hey world whatup\"}}, {\"node\":{\"title\":\"Asdasd\", \"body\":\"asdefasdefe\"}}]}", Nodes.class); 
    System.out.println(nodes.getNodes().get(1).getNode().getBody()); 

Причина, почему это так окольными если вы посмотрите на свой JSON:

{ 
    "nodes": [ 
     { 
      "node": { 
       "title": "esesese", 
       "body": "hey world whatup" 
      } 
     }, 
     { 
      "node": { 
       "title": "Asdasd", 
       "body": "asdefasdefe" 
      } 
     } 
    ] 
} 

Тогда nodes содержит список объектов, которые имеют свойство node, которые имеют title и body собственность - это не просто список объектов, которые содержат title и body. Поэтому вам нужна обложка.

+1

Спасибо! Оба ответа правильны, но ваш более подробно. Еще раз спасибо! – masm64

+0

Рад, что я мог помочь :) – EpicPandaForce

0

Вы можете десериализации в

public class Nodes{ 
private List<Node> nodes = new ArrayList<Node>(); 
} 

public class Node_ { 
private String title; 
private String body; 
} 

public class Node { 
private Node_ node; 
} 

Код Код:

Nodes articles = new Gson().fromJson(result, Nodes.class); 
Смежные вопросы