- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我使用 FlexJson 进行序列化,唯一的问题是它生成小写的字段名称,而我需要它们以大写开头:
class Person
{
String name;
public String getName() { return name;}
}
序列化时,该字段被序列化为 name
,而我需要它是 Name
。
如何指定输出字段名称?我可以添加一些属性来指定所需的序列化名称吗?
最佳答案
您可以使用Custom Transformer 来实现这一点。根据 Flexjson 页面转换器是:
Responsible for deciding how to translate the passed in object to JSON, making the appropriate calls on the JSONContext object to output the JSON, and/or passing the object along the transformation process.
Flexjson 提供了一个抽象类AbstractTransformer以此目的;扩展并覆盖 transform(Object object)
以自行处理转换。
下面粘贴的是我为手动指定字段名称而编写的 FieldNameTransformer
代码:
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"}
关于java - 使用 Flexjson 更改属性名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7652231/
我正在使用 FlexJSON,但在从 int 解析 Date 对象时遇到问题。我正在尝试像这样使用 JSONDeserializer: String json = decryptJson(new St
在 Play Framework 中使用 FlexJSON 2.1 时如何使用自定义顺序?现在我有: public String toJsonString() { // Include id
我正在从 Web 服务接收 JSON 响应,但由于各种原因,我不希望在最终响应对象中反序列化某些属性。例如我有: public class Foo { private String bar;
我是 flexjson 的新手。 我尝试了以下 java 代码进行测试:“FlexjsonTest.zip”。 运行程序的结果在“Protocol.txt”中。 我从命令行运行代码: javac Fl
我是 FlexJson 的新手,正在关注 http://flexjson.sourceforge.net/用于简单教程。 我写了一个简单的程序,但它似乎没有序列化对象属性。如果有人知道这件事,请帮助我
序列化对象时有时会出现此错误 flexjson.JSONException: Error trying to deepSerialize at flexjson.transformer
我正在尝试序列化这个内部类 static class functionMessage{ String type = "function"; String id; String
我正在向我的 Web 应用程序添加 RESTful 支持(使用 Spring),以便我可以执行如下所示的 CRUD 操作:读取有关参与者的信息 (JSONSerialize): $ curl -i -
我正在尝试使用 flexjson 库。但在我的对象中我必须使用:com.google.api.client.util.DateTime 没有无参数构造函数。我总是收到 NoSuchMethodExce
我有一个字符串: [{"product_id":"2","name":'stack"'},{"product_id":"2","name":"overflow"}]" 如何使用 Flexjson 的
我在尝试反序列化我的数据结构时遇到错误,该数据结构是一个项目列表,其中每个项目都实现一个接口(interface)。另外,接口(interface)的字段之一是object,每个继承都将这个Objec
我正在使用 Flexjson 将这样的类序列化为 JSON: public class Item { private Long id; private String name;
我使用 FlexJson 进行序列化,唯一的问题是它生成小写的字段名称,而我需要它们以大写开头: class Person { String name; public String
我有一个 Java 类,我想从该类的对象生成 JSON 字符串。然而,该类的成员如下: /** * The set containing the footer texts */ public He
我正在使用 Oracle OPAM,它有一个具有类似方法的 REST API { "Target Collection":[ { "target":{ "u
我在尝试使用 FlexJSON 序列化 JPA/Hibernate 实体时遇到了一个非常奇怪的错误。对象本身并不花哨;只是字段和其他对象之间的关系。 Caused by: flexjson.JSONE
当涉及到 flexjson 库时,我在使用 dexguard 时遇到了问题。尝试使用 JSONDeserializer 反序列化时,我不断收到以下错误。 **09-15 20:46:10.271 1
使用 Flexjson ,我正在尝试序列化一个包含列表的对象(“有效负载”)。每个 MyBean 都有一个字段“items”,它是一个 Map>。当我序列化此 Payload 对象时,映射字段(“it
我有一个带有 Double[] 变量的简单用户类,用于指定用户的位置。 @Document public class User { private long id; private D
我正在使用 Play Framework 公开 REST API,它返回一些 JSON 对象。 为了简化 API 的使用,我想在响应中返回一个“计算”字段。 不幸的是,在我的测试中,虽然 FlexJs
我是一名优秀的程序员,十分优秀!