1. 程式人生 > 程式設計 >為什麼rest介面返回json建議採用下劃線形式,不要用駝峰

為什麼rest介面返回json建議採用下劃線形式,不要用駝峰

今天被資料大神說了,對接第三方介面返回的json欄位我想用駝峰形式,他說我這樣不專業。所以就改了,認慫。

記住以後再次對接rest介面,返回的欄位用下劃線形式

記錄一下改的內容

1.使用fastjson的@JSONField(name = "is_member")

如果沒有fastjson的包,要先引入

 <!-- fastjson start -->
 <dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>fastjson</artifactId>
   <version>1.2.54</version>
 </dependency>
    <!-- fastjson end -->

實體引數:

  /**
 * 是否會員
 */
 @JSONField(name = "is_member")
 private String isMember;

將需要轉換的實體都標註好後,在通過JSONObject轉jsonString的時候,就可以得到欄位為下戶線的json了

String json = JSONObject.toJSONString(new Entity());

tips:可以寫個單元測試,測試一下這個轉換是否成功

另外,還可以設定json轉換時去掉某個欄位,只需要這麼寫

@JSONField(serialize = false)

private String name;

自己寫單元測試試一下吧

2.為了統一,csv檔案的header欄位我也用了下劃線,但是由於這個不是轉換json,所以上面的方法行不通,所以我自己轉換了一下。

  public static final char UNDERLINE = '_';
   /**
 * @Description 駝峰式轉下劃線
 */
public static String camelToUnderline(String param) {
 if (param == null || "".equals(param.trim())) {
  return "";
 }
 int len = param.length();
 StringBuilder sb = new StringBuilder(len);
 for (int i = 0; i < len; i++) {
  char c = param.charAt(i);
  if (Character.isUpperCase(c)) {
  sb.append(UNDERLINE);
  sb.append(Character.toLowerCase(c));
  } else {
  sb.append(c);
  }
 }
 return sb.toString();
 }

好了,統一下劃線格式就改好了。

補充知識:@JsonProperty註解 和 @Colume註解 -- 駝峰式和下劃線之間的自動轉換

變數名為appid,希望jackson在把物件轉換為json串時變為 AppId。可以使用@JsonProperty註解

@JsonProperty("user_name")

private String userName;

變數名為 createTime,希望JPA自動對應到資料庫的 create_time 欄位,可以使用

@Column 註解。
  @Column(name = "create_time")
  public Timestamp getCreateTime() {
    return createTime;
  }

以上這篇為什麼rest介面返回json建議採用下劃線形式,不要用駝峰就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。