当前位置: 首页 > 知识库问答 >
问题:

改装GSON解析动态repsonse(键名称未知)

爱海
2023-03-14

我试图在Reformation/gson中解析下面的json响应,特别是这个json

{  
   "Coincheck":{  
      "BTC":[  
         "JPY"
      ]
   },
   "QuadrigaCX":{  
      "ETH":[  
         "CAD",
         "BTC"
      ],
      "BTC":[  
         "USD",
         "CAD"
      ]
   }
   // ... more data
}

我尝试使用Map

public class ExchangeResp
{
    Map<String, Map<String, List<String>>> exchanges;

    public Map<String, Map<String, List<String>>> getExchanges()
    {
        return exchanges;
    }
}

但我总是得到回应。正文()为空。我是否需要创建实现JsonDeserializer的自定义json去序列化器并传递给gson生成器?

共有2个答案

锺宜
2023-03-14

添加以下三个模型

    public class Item {

@SerializedName("Coincheck")
@Expose
private Coincheck coincheck;
@SerializedName("QuadrigaCX")
@Expose
private QuadrigaCX quadrigaCX;

public Coincheck getCoincheck() {
return coincheck;
}

public void setCoincheck(Coincheck coincheck) {
this.coincheck = coincheck;
}

public QuadrigaCX getQuadrigaCX() {
return quadrigaCX;
}

public void setQuadrigaCX(QuadrigaCX quadrigaCX) {
this.quadrigaCX = quadrigaCX;
}

}

共同检查。Java语言

    public class Coincheck {

@SerializedName("BTC")
@Expose
private List<String> bTC = null;

public List<String> getBTC() {
return bTC;
}

public void setBTC(List<String> bTC) {
this.bTC = bTC;
}

}

四边形

    public class QuadrigaCX {

@SerializedName("ETH")
@Expose
private List<String> eTH = null;
@SerializedName("BTC")
@Expose
private List<String> bTC = null;

public List<String> getETH() {
return eTH;
}

public void setETH(List<String> eTH) {
this.eTH = eTH;
}

public List<String> getBTC() {
return bTC;
}

public void setBTC(List<String> bTC) {
this.bTC = bTC;
}

}

使用retrfit的网络调用应该是

 call1.enqueue(new Callback<Item>() {
            @Override
            public void onResponse(Call<Item> call, Response<Item> response) {

            }

            @Override
            public void onFailure(Call<Item> call, Throwable t) {

            }


        });
邓才
2023-03-14

使用您的响应类作为

import com.google.gson.annotations.SerializedName;

import java.util.List;


public class Reposne {

@SerializedName("Coincheck")
private Coincheck coincheck;

@SerializedName("QuadrigaCX")
private QuadrigaCX quadrigaCX;

public Coincheck getCoincheck() {
    return coincheck;
}

public void setCoincheck(Coincheck coincheck) {
    this.coincheck = coincheck;
}

public QuadrigaCX getQuadrigaCX() {
    return quadrigaCX;
}

public void setQuadrigaCX(QuadrigaCX quadrigaCX) {
    this.quadrigaCX = quadrigaCX;
}

class Coincheck {
    @SerializedName("BTC")
    private List<String> btc;

    public List<String> getBtc() {
        return btc;
    }

    public void setBtc(List<String> btc) {
        this.btc = btc;
    }
}

class QuadrigaCX {
    @SerializedName("ETH")
    private List<String> eth;
    @SerializedName("BTC")
    private List<String> btc;

    public List<String> getEth() {
        return eth;
    }

    public void setEth(List<String> eth) {
        this.eth = eth;
    }

    public List<String> getBtc() {
        return btc;
    }

    public void setBtc(List<String> btc) {
        this.btc = btc;
    }
}

}
 类似资料:
  • 我想在Android Studio中使用Gson库解析以下JSON数据。但是数据是通用的...不知道数据中有什么键(对象)... 在学校物体下——有1103号物体。 在这个物体下,我们有shoolname,shortname,students,同样在students下,有id,比如2201,2202。。。这些物体是动态的,不知道会有什么反应。。 所以问题是如何解析这个json字符串在Android

  • 我想使用此服务:http://fast-gorge.herokuapp.com/contacts我设置Retrofit解析如下: 其中,我的日期格式为: 然而,当我运行该应用程序时,我进入了failure(reformerror error)方法,并显示消息:reformation。改装错误:com。谷歌。格森。JsonSyntaxException:2014-07-31T07:49:23.000

  • 但是我的DetailModel是一个基类,我的user.class和organization.class是DetailModel的子类。但是我不知道如何解析对我的用户或组织模型的响应。

  • 问题内容: 我目前正在开发一个Android项目,该项目需要我调用网络服务,该服务将返回一个json文件。我一直在使用GSON库来解析所有json文件并获取一个JSON对象。在我遇到关键字段是动态的json数据之前,它一直运行良好。此文件的示例如下: 我能够基于键ID“ 0”获得计数,但是我不确定如何利用该值来获取其他键对象(键ID 1-5),该键对象包含以下数据:我需要。如果有人在这件事上能帮助

  • 问题内容: 我知道,Java没有预处理器,因此Java中有些东西或多或少是不可能的。 真的 没有 办法在循环中用动态名称填充这些数组吗?我想要类似的东西: 代替 还是有可以使用的古怪技巧? 问题答案: 我会那样做: 如果要使用该方法:

  • 问题内容: 因此,我使用GSON来从API解析JSON,并被困在如何解析数据中的动态字段上。 这是查询返回的JSON数据的示例: 我当前处理单个静态值的方式是使用一个类: 然后我可以简单地使用GSON来解析它: 我知道这对子数据有效,因为我可以查询并获得单个条目并非常轻松地解析该条目,但是为数组中每个值给出的随机整数值呢?(即30655845和2868874) 有什么帮助吗? 问题答案: 根据GS