English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

jacksonでJSON文字列を解析し、先頭の文字が大文字であれば自動的に小文字に変換する方法

問題

管理人が直面した問題は、エンティティクラスおよびテーブルで定義された特定のフィールドがRMBPriceであり、首文字が大文字で、SQLクエリで返される列名も大文字のRMBPriceですが、jQueryのdatatablesで列を初期化する際にエラーが発生しました。

その行のコードは以下の通りです:

{"name": "RMBPrice", "data": "RMBPrice", "className": "text-, "render": formatRMBPrice},

ページを開くとこのように表示されます。ブラウザがインターフェースを呼び出した値を確認してください:

これは小文字のrmbpriceです

分析

インターフェースが返すのは@ResponseBodyオブジェクトであり、コードでバグを固定し、インターフェースの返り値がすべて大文字であるため、JSONに変換する際に問題がある可能性があります。

百度のjsonの最初の文字が大文字の場合、自動的に小文字に変換される記事が現れました。

テストの結果、現在のすべての文字が大文字であるため、すべて小文字に変換されますが、大文字が続く場合はそのままにします。

例えば、RRRddRRRはrrrddRRRに変わります。

解決策

私はjsの中のその行のコードを直接修正し、以下のように変更しました:

{"name": "rmbprice", "data": "rmbprice", "className": "text-, "render": formatRMBPrice},

調査の結果、大文字を保持するにはアノテーションを追加する必要があります。

例えばjacksonを使用:

エンティティクラスのフィールドを定義する際に:

@JsonProperty("ActionCode") 
 private String ActionCode = ""; 

fastjsonを使用:

@JSONField(name = “Name”) このマークはgetメソッドの前にマークされるべきです:

public class User {}} 
 private String name; 
 private int age; 
 @JSONField(name = "Name") 
 public String getName(){
  return name;
 } 
 public void setName(String name){
  this.name = name;
 }
 @JSONField(name = "Age") 
 public int getAge(){
  return age;
 } 
 public void setAge(int age){
  this.age = age;
 }
} 

また、ある人は言っています:

強制的な変換は、com.alibaba.fastjson.serializer.PascalNameFilterを使用して、直接最初の文字を大文字に変換します。例えば:JSON.toJSONString(bean, new PascalNameFilter());

ただし、上記のものは私が試したものではありません。なぜなら、私は名前を自動的に小文字に変換する方法を選んだからです。大文字を保持するには、自分でさらに探してみてくださいね~~;9786;;9786;

以上の「jacksonがJSON文字列を解析する方法、首文字が大文字の場合は自動的に小文字に変換される」という方法が、編集者が皆さんに提供する全ての内容です。皆さんに参考になれば幸いです。また、ナウズラーニング教程を応援していただけると嬉しいです。

声明:この記事の内容はインターネットから収集され、著作権者所有、インターネットユーザーが自発的に貢献し、アップロードしたものです。このサイトは所有権を持ちません。また、人工的な編集もなく、関連する法的責任も負いません。著作権侵害の可能性のある内容を見つけた場合は、notice#wまでメールをお送りください。3codebox.com(メールを送信する際には、#を@に変更してください)で通報してください。関連する証拠を提供し、一旦確認ができ次第、このサイトは侵害される可能性のあるコンテンツをすぐに削除します。

おすすめ