Json 访问字段名“*”到 Java class

Json access field name "*" to Java class

javascript 中的类似问题:

我试图在我的 android 应用程序中使用 Retrofit(moshi 转换器)处理维基百科 api。但是我不能写 java class 带有“*”的文本作为字符串。

维基百科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);
  }

}

您没有指明您使用的是哪个 JSON 库,每个库的答案都不一样。我要假设 Gson。

您可以将 @SerializedName 注释用于 read/write 与您定义的字段名称不同的 JSON 键。

@SerializedName("*")
public String star;

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

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