これは、カスタム トランスフォーマーを使用して実現できます。Flexjson ページ トランスフォーマーは次のとおりです。
渡されたオブジェクトを JSON に変換する方法を決定し、JSONContext オブジェクトを適切に呼び出して JSON を出力し、変換プロセスに沿ってオブジェクトを渡します。
Flexjson は、この目的のために抽象クラスAbstractTransformerを提供しています。transform(Object object)
自分で変換を処理するには、拡張およびオーバーライドします。
FieldNameTransformer
以下に貼り付けたのは、フィールド名 s を手動で指定するために私が書いたコードです。
public class FieldNameTransformer extends AbstractTransformer {
private String transformedFieldName;
public FieldNameTransformer(String transformedFieldName) {
this.transformedFieldName = transformedFieldName;
}
public void transform(Object object) {
boolean setContext = false;
TypeContext typeContext = getContext().peekTypeContext();
//Write comma before starting to write field name if this
//isn't first property that is being transformed
if (!typeContext.isFirst())
getContext().writeComma();
typeContext.setFirst(false);
getContext().writeName(getTransformedFieldName());
getContext().writeQuoted(object.toString());
if (setContext) {
getContext().writeCloseObject();
}
}
/***
* TRUE tells the JSONContext that this class will be handling
* the writing of our property name by itself.
*/
@Override
public Boolean isInline() {
return Boolean.TRUE;
}
public String getTransformedFieldName() {
return this.transformedFieldName;
}
}
このカスタム トランスフォーマーの使用方法は次のとおりです。
JSONSerializer serializer = new JSONSerializer().transform(new FieldNameTransformer("Name"), "name");
元のフィールドの名前は「名前」ですが、json 出力では名前に置き換えられます。
サンプリング:
{"Name":"Abdul Kareem"}