【问题标题】:Json access field name "*" to Java classJson 访问字段名称“*”到 Java 类
【发布时间】:2016-04-27 20:40:50
【问题描述】:

javascript中的类似问题:

我试图在我的 android 应用程序中使用 Retrofit(moshi 转换器)处理 wikipedia api。但是我不能用“*”作为字符串编写java类文本。

维基百科 json 请求 example.

编辑:如果有帮助的话。一切正常,除了 String _;因为它不是“*”。

public class Text {

  private String _;
  private Map<String, Object> additionalProperties = new HashMap<String, Object>();

  public String get_() {
    return _;
  }

  public void set_(String _) {
    this._ = _;
  }

  public Map<String, Object> getAdditionalProperties() {
    return this.additionalProperties;
  }

  public void setAdditionalProperty(String name, Object value) {
    this.additionalProperties.put(name, value);
  }
}

,

public class Section {

  private Parse parse;
  private Map<String, Object> additionalProperties = new HashMap<String, Object>();

  public Parse getParse() {
    return parse;
  }

  public void setParse(Parse parse) {
    this.parse = parse;
  }

  public Map<String, Object> getAdditionalProperties() {
    return this.additionalProperties;
  }

  public void setAdditionalProperty(String name, Object value) {
    this.additionalProperties.put(name, value);
  }

}

,

public class Parse {

  private String title;
  private Integer pageid;
  private Text text;
  private Map<String, Object> additionalProperties = new HashMap<String, Object>();

  public String getTitle() {
    return title;
  }


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


  public Integer getPageid() {
    return pageid;
  }


  public void setPageid(Integer pageid) {
    this.pageid = pageid;
  }


  public Text getText() {
    return text;
  }


  public void setText(Text text) {
    this.text = text;
  }

  public Map<String, Object> getAdditionalProperties() {
    return this.additionalProperties;
  }

  public void setAdditionalProperty(String name, Object value) {
    this.additionalProperties.put(name, value);
  }

}

【问题讨论】:

  • 请贴出你试过的代码。
  • 我根本无法创建带有“*”名称的 java 类来保存 json

标签: java android json wikipedia-api retrofit2


【解决方案1】:

您没有指明您使用的是哪个 JSON 库,并且每个库的答案都不同。我将假设 Gson。

您可以使用@SerializedName 注释来读取/写入与您定义的字段名称不同的 JSON 键。

@SerializedName("*")
public String star;

这将生成类似{"*": ...} 的 JSON 并以相同格式读取 JSON。

Java 中的大多数 JSON 库都有执行此操作的机制,因此如果您使用 Gson 以外的库,则需要查阅其文档以了解如何更改字段名称。

【讨论】:

  • 我使用的是 Moshi。更改为 Gson 并且答案完美无缺
  • 对于 Moshi,它是 @Json(name = "*")
猜你喜欢
  • 2022-07-22
  • 1970-01-01
  • 2021-11-28
  • 2019-04-08
  • 1970-01-01
  • 2014-06-16
  • 1970-01-01
  • 1970-01-01
  • 2015-02-17
相关资源
最近更新 更多