当前位置: 首页 > 面试题库 >

使用Flexjson更改属性名称

农均
2023-03-14
问题内容

我使用FlexJson进行序列化,唯一的问题是它会生成小写的字段名,而我需要它们以大写开头:

class Person
{
     String name;
     public String getName() { return name;}
}

当序列化时,字段被序列化为name,而我需要它被序列化Name

如何指定输出字段名称?我可以使用一些属性来指定所需的序列化名称吗?


问题答案:

您可以使用“ 自定义变压器” 来实现。根据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"}


 类似资料:
  • 问题内容: 有没有一种方法可以使用jQuery更改CSS类的属性,而不是元素属性? 这是一个实际的例子: 我上课有一个div 我想更改类背景属性,而不是已分配类背景的元素。 如果我使用jQuery .css()方法做到这一点: 它会影响现在具有class的元素。到这里为止一切都很好。但是,如果我进行Ajax调用,并在class中插入更多div ,则这些背景将不会具有绿色背景,而它们将具有初始背景。

  • 问题内容: 我需要找到一种使用JavaScript更改CSS:hover属性的方法。 例如,假设我有以下HTML代码: 以及以下CSS代码: 我想使用JavaScript将悬停属性更改为例如background:#00ff00。知道我可以使用JavaScript通过以下方式访问样式背景属性: 但是我不知道:hover的JavaScript等效项。如何使用JavaScript更改这些的:hover背

  • 我试图创建一个java程序,它将在WebSphere上编辑JVM的类路径属性。我现在能够将程序连接到服务器,也能找到节点,但我不知道下一步该做什么。我应该使用哪个MBean来找到JVM类路径并对其进行配置?我知道我可以在管理控制台上编辑它,但是对于这个任务,我真的必须使用Java程序来完成。 我也不允许使用wsadmin和jacl/jython脚本。 这是我目前的代码: 任何帮助都将不胜感激。非常

  • 问题内容: 我的课有一个属性’PropertyA’,我希望它在序列化时在JSON对象中显示为’PropertyB’。我可以使用某种属性吗? 问题答案: 对于与使用: 确保您的课程也用属性修饰。 如果您使用的是JavaScriptSerializer,则需要创建派生的实现

  • 问题内容: 我想使用PHP DOMDocument更改标签属性的值。 例如,假设我们有以下这行HTML: 我将上述代码加载到PHP中,如下所示: 我想使用PHP的DOMDocument扩展名将“ href”值更改为“ http://google.com/”。这可能吗? 与往常一样感谢您的帮助! 问题答案:

  • 我正在用selenium自动化一个应用程序。没有像id这样的普通标签,我可以通过它找到元素。所以我使用的是xpath[driver.findElement(By.xpath())]。但是现在我发现WebElement的一些XPath在运行时动态变化,所以我的测试用例失败了。甚至相对xpath选项也不适用于HTML。我正在粘贴AUT的html的一部分。请让我知道如何处理这种情况。