【问题标题】:How to get a string without "" in json response如何在json响应中获取没有“”的字符串
【发布时间】:2018-02-09 04:43:05
【问题描述】:

我是 springboot 新手,在我的 json 响应中得到如下响应:

"Number": "08002050"

我已在我的 Spring Boot 应用程序中将其定义为字符串。

我想得到如下回复:

"Number": 08002050

我如何做到这一点。请帮忙

【问题讨论】:

  • 事实上你想把你的字符串解析为一个整数,对吧?
  • 您必须在服务器端将 String 解析为 int。
  • 在java中将字符串解析为整数使用Integer.parseInt("08002050")
  • 这不可能发生,因为这里的字段“Number”是一个字符串,并且不能接受 Integer.parseInt("08002050") 作为它在 setter 方法中提交的 Number 的输入!!
  • @Afsun 你说的服务器端到底是什么意思?

标签: json spring-boot jersey


【解决方案1】:

您可以在服务器端通过一种棘手的方式对其进行管理。

public class User {

    private int id;

    private String name;

    @JsonIgnore  // ignore this field when serialize
    private String number;

    @JsonProperty(value = "number") // change name of field when serialize
    private int intValueOfNumber;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number;
    }

    public int getIntValueOfNumber() {
        return Integer.parseInt(number); // parse number string to int
    }

    public void setIntValueOfNumber(int intValueOfNumber) {
        this.intValueOfNumber = intValueOfNumber;
    }


}

在此实体中,@JsonIgnore 注释忽略您的字段以进行 JSON 序列化,并将 intValueOfNumber 作为 int 传递给 JSON。您的 json 将如下所示:

{"id":1,"name":"Java","number":44124}

解析为int时,可能会丢失数字字符串的零后缀。

【讨论】:

  • 我需要它看起来与“数字”完全相同:08002050 后缀为 0。如果我们必须在没有 : 后缀的情况下实现类似 "Number": 8002050 的内容,那么有一种简单的方法只需为相应的字符串字段添加一个新注释作为 @JsonRawValue。所以请建议一些其他选项,我也可以得到 0 后缀
  • 我没有别的想法。
猜你喜欢
  • 2015-11-26
  • 2017-03-23
  • 1970-01-01
  • 2016-05-22
  • 2014-05-01
  • 1970-01-01
  • 2020-05-09
  • 1970-01-01
  • 2016-08-28
相关资源
最近更新 更多