【问题标题】:Receiving JSON data in Java Object在 Java 对象中接收 JSON 数据
【发布时间】:2020-03-24 01:19:10
【问题描述】:

我想存储replies 数据:

replies : {
  "kind": "Listing",
  "data": "Foobar"
}

并且我创建了以下对象结构来将上述 JSON 存储在 Java 中:

class Replies {
  private String kind;
  private String data;
}

但问题是,在某些情况下(当数据字段为空值时)replies 对象会返回:

replies : ""

发生这种情况时,它会抛出错误,因为它无法将 String 存储在 replies 对象中。我应该怎么做才能解决这个问题?

编辑:也许我对问题的措辞有点混乱。我的问题归结为:如何创建类Replies 不仅接收Replies 对象(当对象为非空时),还接收String(当对象为空时)?

【问题讨论】:

  • 你说“它显示为”;请提供有关此案例的更多详细信息。一般来说,在这种情况下,在返回 JSON 字符串和 JSON 对象之间切换是非常不友好的行为,应尽可能进行更改。
  • @chrylis-onstrike- 是的,我同意。让我改写一下:“当Replies对象为空时(在REST响应中),它返回replies : "",导致尝试将其映射到Replies对象时出现问题。

标签: java android retrofit


【解决方案1】:
class Replies {

private String kind;
private String data;



Replies(String data,String kind){
    this.data=data;
    this.kind=kind;
}

Replies(String kind){
    this.kind=kind;
}

}

在 onCreate() 中

 Replies replies;

if(data==null){

 replies = new Replies(kind);

 }else{

   replies = new Replies(data,kind);
  }

【讨论】:

  • 不仅仅是数据字段为空。整个回复对象本身就是一个 String obj,而不是 Replies 对象。
【解决方案2】:

你可以检查获取到的JSON(replies)的长度,例如如果它的长度大于4个字符,那么它一定有数据,然后做你的代码,否则,它小于或等于4 chars,那么这意味着 JSON 的长度很短,这表明不使用该 JSON。

【讨论】:

  • 我认为这不是最佳选择。是的,我可以做一些快速而肮脏的事情,但我想在不使用一些技巧的情况下做到这一点。
  • 好吧,如果您不想使用获得的 JSON 来解决问题,我唯一的解决方案是让后端处理问题,因为后端不应该返回空回复。
猜你喜欢
  • 2023-03-19
  • 2020-07-05
  • 2018-09-04
  • 2012-10-08
  • 2017-08-26
  • 1970-01-01
  • 2018-12-29
  • 2012-07-19
  • 1970-01-01
相关资源
最近更新 更多