Java Android JPA JSON自定义子对象读取问题

Java Android JPA JSON自定义子对象读取问题,java,android,json,jpa,Java,Android,Json,Jpa,下面是由Web服务上的JPA函数创建的JSON数组: [{"Producao":{"cliente":{"id":3,"nome_fantasia":"animal"},"data":"2013-11-08T00:00:00-02:00","id":1,"liberado":0,"prazo":"2013-11-14T00:00:00-02:00","produto":{"codigo_desenho":"CODIGO","dependencia":0,"descricao":"Produto1

下面是由Web服务上的JPA函数创建的JSON数组:

[{"Producao":{"cliente":{"id":3,"nome_fantasia":"animal"},"data":"2013-11-08T00:00:00-02:00","id":1,"liberado":0,"prazo":"2013-11-14T00:00:00-02:00","produto":{"codigo_desenho":"CODIGO","dependencia":0,"descricao":"Produto1","disponivel":1,"id":39,"qtde":1,"raiz":0},"qtde":1}},{"Producao":{"cliente":{"id":1,"nome_fantasia":"bem"},"data":"2013-11-08T00:00:00-02:00","id":2,"liberado":0,"prazo":"2013-11-14T00:00:00-02:00","produto":{"codigo_desenho":"","dependencia":0,"descricao":"teste3","disponivel":1,"id":35,"qtde":1,"raiz":0},"qtde":2}}]
我必须在我的Android应用程序中阅读它。将它们转换为列表。 对象“Producao”将对象“Cliente”作为属性

我正努力做到以下几点:

public static Producao jSONToProducao(JSONObject json) throws JSONException, ParseException{
        JSONObject jPro = json.getJSONObject("Producao");
        Producao producao = new Producao();
        producao.setId(jPro.getInt("id"));
    producao.setCliente(ClienteDAO.jSONToCliente(jPro.getJSONObject("cliente")));
    .
    .
    .
    return producao;
}
其中ClienteDAO.jSONToClient是:

public static Cliente jSONToCliente(JSONObject json) throws JSONException{
        JSONObject jCli = json.getJSONObject("Cliente");
        Cliente cliente = new Cliente();
        cliente.setId(jCli.getInt("id"));
        cliente.setNome_fantasia(jCli.getString("nome_fantasia"));
    return cliente;
}
但是行
producao.setCliente(ClienteDAO.jsontoclient(jPro.getJSONObject(“cliente”))
返回:

JSON异常~>cliente没有值”。"

我也试着把它当作JSONArray来读,但没用

JSON异常~>客户端无值

因为您正在从
jSONToProducao
cliente
JSONObject传递到
jSONToCliente
方法,所以更改代码以从
cliente
JSONObject获取所有值:

public static Cliente jSONToCliente(JSONObject json) throws JSONException{
     // json contain only cliente JSONObject
        Cliente cliente = new Cliente();
        cliente.setId(json.getInt("id"));
        cliente.setNome_fantasia(json.getString("nome_fantasia"));
    return cliente;
}