【发布时间】:2018-11-02 13:34:43
【问题描述】:
我想在 recyclerview 中显示这个 json。我该怎么做? 我只想列出“user”和“exchangeName”。
我的 Json;
{ “事件”:{ “101”:{ “id”:“0001”, “类型”:“交换”, “用户”:“BTUser01”, "exchangeName": "BTCTurk", “交易”:{ “发送”:“249”, “得到”:“24.1” }, “证书”: [ “BTUser01证书” ] }, “102”:{ “id”:“0002”, “类型”:“交换”, “用户”:“BTUser02”, "exchangeName": "Koinim", “交易”:{ “发送”:“300”, “得到”:“641” }, “证书”: [ “BTUser02证书” ] }, “103”:{ “id”:“0003”, “类型”:“exchange2”, “用户”:“BTUser03”, "exchangeName": "Koineks", “交易”:{ “发送”:“823”, “得到”:“751” }, “证书”: [ “BTUser03证书” ] }, “104”:{ “id”:“0004”, “类型”:“exchange3”, “用户”:“BTUser04”, "exchangeName": "Paribu", “交易”:{ “发送”:“543”, “得到”:“3.1” }, “证书”: [ “BTUser04证书” ] } } }
主活动;
public class MainActivity extends AppCompatActivity {
TextView ev, ev2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ev = (TextView) findViewById(R.id.ev);
ev2 = (TextView) findViewById(R.id.ev2);
Retrofit retrofit = new Retrofit.Builder().baseUrl("MYAPİ_ADRESS_LINK").addConverterFactory(GsonConverterFactory.create()).build();
Service service = retrofit.create(Service.class);
Call<ResponseBody> call = service.getData();
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(@NonNull Call<ResponseBody> call, @NonNull Response<ResponseBody> response) {
if (response.isSuccessful()) {
String res = null;
if (response.body() != null) {
try {
res = response.body().string();
parse(res);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
@Override
public void onFailure(@NonNull Call<ResponseBody> call, @NonNull Throwable t) {
int a = 0;
}
});
}
Model parse(String str) {
Model model = new Model();
try {
String source = str.replace("\n", "").replace("\t", "").replace("\r", "");
String s = new Gson().toJson(source);
s = s.replace("\\","");
s = s.substring(1,s.length()-1);
JSONObject object = new JSONObject(s).getJSONObject("events");
Iterator<String> iter = object.keys();
while (iter.hasNext()) {
String key = iter.next();
try {
JSONObject value = new JSONObject(String.valueOf(object.get(key)));
model.setExternalId(Integer.parseInt(key));
model.setUser(value.getString("user"));
model.setSend(value.getString("send"));
ev.setText(model.user);
ev2.setText(model.send);
return model;
} catch (JSONException e) {
// Something went wrong!
}
}
} catch (JSONException e) {
e.printStackTrace();
}
return model;
}
}
我的模型;
public class Model {
int externalId;
int id;
String type;
String user;
String exchangeName;
Transactions transactions;
List<certificate> certificateList;
public int getExternalId() {
return externalId;
}
public void setExternalId(int externalId) {
this.externalId = externalId;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getExchangeName() {
return exchangeName;
}
public void setExchangeName(String exchangeName) {
this.exchangeName = exchangeName;
}
public Transactions getTransactions() {
return transactions;
}
public void setTransactions(Transactions transactions) {
this.transactions = transactions;
}
public List<certificate> getCertificateList() {
return certificateList;
}
public void setCertificateList(List<certificate> certificateList) {
this.certificateList = certificateList;
}
class Transactions{
String send;
String get;
public String getSend() {
return send;
}
public void setSend(String send) {
this.send = send;
}
public String getGet() {
return get;
}
public void setGet(String get) {
this.get = get;
}
}
class certificate{
String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
}
【问题讨论】:
标签: android json parsing android-recyclerview