@JsonProperty在工作中的实际使用

在工作中遇到了,要将websocket传过来的json字符串转化为一个固定的结构,传输到mq上面去

里面就涉及到json字符串和实体对象之间的转化问题

1、首先可以使用JSON.parseObject(str,xxDo.class),将一个json字符串转化为一个实体类

CoinbaseTicketDo coinbaseTicketDo = JSON.parseObject(jsonStr, CoinbaseTicketDo.class);

2、定义一个返回的实体的VO

package com.zhichun.coinbaseTest.entity;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

/**
 * coinbase行情信息统一推送到mq对象
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@JsonIgnoreProperties(ignoreUnknown = true)
public class CoinbaseTickerVo implements Serializable {
    /**
     * event type
     */
    @JsonProperty("e")
    private String eventType;
    /**
     * event time
     */
    @JsonProperty("E")
    private Long eventTime;
    /**
     * symbol
     */
    @JsonProperty("s")
    private String symbol;
    /**
     * price change
     */
    @JsonProperty("p")
    private String priceChange;
    /**
     * price change percent
     */
    @JsonProperty("P")
    private String priceChangePer;
    /**
     * open price
     */
    @JsonProperty("o")
    private String openPrice;
    /**
     * high price
     */
    @JsonProperty("h")
    private String highPrice;
    /**
     * low price
     */
    @JsonProperty("l")
    private String lowPrice;
    /**
     * last price
     */
    @JsonProperty("c")
    private String lastPrice;
    /**
     * weighted average price
     */
    @JsonProperty("w")
    private String weightAvePrice;
    /**
     * total traded base asset volume
     */
    @JsonProperty("v")
    private String baseVolume;
    /**
     * total traded quote asset volume
     */
    @JsonProperty("q")
    private String quoteVolume;
    /**
     * statistics open time
     */
    @JsonProperty("O")
    private Long openTime;
    /**
     * statistics close time
     */
    @JsonProperty("C")
    private Long closeTime;
    /**
     * first trade id
     */
    @JsonProperty("F")
    private Long firstTradeId;
    /**
     * last trade id
     */
    @JsonProperty("L")
    private Long lastTradeId;
    /**
     * total number of trades
     */
    @JsonProperty("n")
    private Long numOfTrades;
}

使用@JsonProperty注解可以使得json字符串和实体对象的字段做一个映射

3、使用ObjectMapper可以将实体类转化为字符串

ObjectMapper objectMapper = new ObjectMapper();
String jsonStr = objectMapper.writeValueAsString(coinbaseTickerVo);

 并且转化成的json字符串,得到的字段名不是实体类的字段名,而是@JsonProperty上定义的属性名

 

 

 

你可能感兴趣的:(java)