如何在Java中使用snake yaml序列化具有自定义名称的字段

2024-03-09

我正在尝试序列化具有如下字段的 Java 实例。

public class Person{
    private String firstName;
    private String lastName;

    public String getFirstName() {

        return firstName;
    }

    public void setFirstName(String firstName) {

        this.firstName = firstName;
    }

    public String getLastName() {

        return lastName;
    }

    public void setLastName(String lastName) {

        this.lastName = lastName;
    }
}

如何使用与实际字段名称不同的名称来序列化它们?在Gson这是可以通过使用@SerializedName("first-name")注释如下。

@SerializedName("first-name")
private String firstName;

有没有类似上面的东西snakeyaml。的依赖项详细信息snakeyaml如下,

        <dependency>
            <groupId>org.yaml</groupId>
            <artifactId>snakeyaml</artifactId>
            <version>1.17</version>
        </dependency>

下面是程序的主类,其答案由flyx

public class Demo {

    public static void main(String[] args) {

        Person person = new Person();
        person.setFirstName("Kasun");
        person.setLastName("Siyambalapitiya");

        Constructor constructor = new Constructor(Person.class);
        Representer representer = new Representer();
        TypeDescription personDesc = new TypeDescription(Person.class);
        personDesc.substituteProperty("first-name", Person.class, "getFirstName", "setFirstName");
        personDesc.substituteProperty("last-name", Person.class, "getLastName", "setLastName");
        constructor.addTypeDescription(personDesc);
        representer.addTypeDescription(personDesc);
        Yaml yaml = new Yaml(constructor, representer);
        String yamlString = yaml.dumpAs(person, Tag.MAP, DumperOptions.FlowStyle.BLOCK);

        Path updateDescriptorFilePath =
                Paths.get(File.separator + "tmp" + File.separator + "sample.json");
        try {
            FileUtils.writeStringToFile(updateDescriptorFilePath.toFile(), yamlString);
        } catch (IOException e) {
            System.out.println(e.getCause());
        }
    }
}

上述结果产生以下输出

/tmp  cat sample.json
first-name: Kasun
last-name: Siyambalapitiya
firstName: Kasun
lastName: Siyambalapitiya
 /tmp   


Constructor constructor = new Constructor(Person.class);
Representer representer = new Representer();
TypeDescription personDesc = new TypeDescription(Person.class);
personDesc.substituteProperty("first-name", String.class,
        "getFirstName", "setFirstName");
constructor.addTypeDescription(personDesc);
representer.addTypeDescription(personDesc);
Yaml yaml = new Yaml(constructor, representer);
// and then load /dump your file with it
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Java中使用snake yaml序列化具有自定义名称的字段 的相关文章

  • 枚举的子类化

    有没有一种简单的方法来子类化Javaenum 我问这个问题是因为我有大约 10 个实现相同接口的对象 但它们对某些方法也有相同的实现 因此我想通过将所有相同的实现放置在扩展的中间对象中来重用代码Enum它也是我需要的所有其他类的超类 或许事
  • 在Windows Server 2003下如何在本地系统帐户下运行jvisualvm.exe?

    我在带有 Java 1 6 u 20 的 Windows Server 2003 下将 GlassFish 3 0 1 作为 Windows 服务运行 总体上我很满意 我希望能够在这个 JVM 上使用 VisualVM 并使用无法在 Tom
  • 使用 proguard 混淆文件名

    我正在使用 proguard 和 Android Studio 混淆我的 apk 当我反编译我的apk时 我可以看到很多文件 例如aaa java aab java ETC 但我项目中的所有文件都有原始名称 有没有办法混淆我的项目的文件名
  • 在不支持 CAS 操作的处理器上进行 CompareAndSet

    今天 我在一次采访中被问到下一个问题 如果您在具有不支持 CAS 操作的处理器的机器上调用 AtomicLong 的compareAndSet 方法 会发生什么情况 您能否帮我解决这个问题 并在可能的情况下提供一些全面描述的链接 From
  • Java中Gson、JsonElement、String比较

    好吧 我想知道这可能非常简单和愚蠢 但在与这种情况作斗争一段时间后 我不知道发生了什么 我正在使用 Gson 来处理一些 JSON 元素 在我的代码中的某个位置 我将 JsonObject 的 JsonElements 之一作为字符串获取
  • java中如何知道一条sql语句是否执行了?

    我想知道这个删除语句是否真的删除了一些东西 下面的代码总是执行 else 是否删除了某些内容 执行此操作的正确方法是什么 public Deleter String pname String pword try PreparedStatem
  • 如何使用 Java Apache POI 隐藏 Excel 工作表中以下未使用的行?

    我正在使用数据库中的数据填充模板 Excel 工作表 for Map
  • 将类转换为 JSONObject

    我有好几堂这样的课 我想将类转换为 JSONObject 格式 import java io Serializable import com google gson annotations SerializedName public cla
  • 为什么在将 String 与 null 进行比较时会出现 NullPointerException?

    我的代码在以下行中出现空指针异常 if stringVariable equals null 在此语句之前 我声明了 stringVariable 并将其设置为数据库字段 在这个声明中 我试图检测该字段是否有null值 但不幸的是它坏了 有
  • 如何更改 Swagger-ui URL 前缀?

    我正在使用 Springfox Swagger2 和 Spring boot 1 5 9 我可以通过此链接访问 swagger UI http localhost 8090 swagger ui html http localhost 80
  • 使用 JDBC 连接到 PostgreSql 的本地实例

    我在 Linux 机器上有一个正在运行的 PostgreSql 本地实例 当我使用psql来自 shell 的命令我成功登录 没有任何问题 我需要通过 JDBC 连接到 PostgreSql 但我不知道我到底应该传递什么url参数为Driv
  • Android 认为我没有关闭数据库!为什么?

    我有一个 SQLiteDatabase 数据成员 我在 onCreate 中初始化它 并在 onPause onStop 和 onDestroy 中调用 close 它在 onResume 中重新初始化 它似乎运行得很好 但当我查看调试器时
  • 在java程序中使用c++ Dll

    我正在尝试使用System LoadLibrary 使用我用 C 编写的一个简单的 dll UseDllInJava java import com sun jna Library import com sun jna Native imp
  • 如何自定义舍入形式

    我的问题可能看起来很简单 但仍然无法得到有效的东西 我需要自定义 Math round 舍入格式或其他格式以使其工作如下 如果数字是 1 6 他应该四舍五入到 1 如果大于或等于 1 7 他应该四舍五入到 2 0 对于所有其他带有 6 的小
  • 使用 Proguard 通过 Dropbox.com 库混淆 Android 应用程序

    我刚刚创建了一个需要 Dropbox com API 库的 Android 应用程序 我现在尝试在 发布 模式下构建应用程序 并希望在代码上运行混淆器以对其进行混淆 但是 每当我尝试运行 Proguard 时 都会收到以下错误 Progua
  • 如何使用 Jersey 将嵌套列表封送为 JSON?我得到一个空数组或一个包含数组的单元素字典数组

    我正在开发一个使用 Jersey 将对象转换为 JSON 的项目 我希望能够写出嵌套列表 如下所示 data one two three a b c 我想要转换的对象首先将数据表示为 gt gt 我认为 Jersey 会做正确的事情 以上输
  • Lombok 不适用于 Eclipse Neon

    我下载了lombok jar lombok 1 16 14 jar 并将其放入我的下载中 然后我点击这个 jar 执行正确地识别了我的 MacOS 上的 Eclipse 实例 然后我选择了我想要的实例 Lombok也在pom xml中指定
  • 即使禁用安全性,OAuth 令牌 API 也无法在 Elastic Search 中工作

    我是 Elastic search 新手 使用 Elastic search 版本 7 7 1 我想通过以下方式生成 OAuth 令牌弹性搜索文档 https www elastic co guide en elasticsearch re
  • 我所有的 java 应用程序现在都会抛出 java.awt.headlessException

    所以几天前我有几个工作Java应用程序使用Swing图书馆 JFrame尤其 他们都工作得很好 现在他们都抛出了这个异常 java awt headlessexception 我不知道是什么改变了也许我的Java版本不小心更新了 谢谢你尽你
  • 确定 JavaFX 中是否消耗了事件

    我正在尝试使用 JavaFX 中的事件处理来做一些非滑雪道的事情 我需要能够确定手动触发事件后是否已消耗该事件 在以下示例中 正确接收了合成鼠标事件 但调用 Consumer 不会更新该事件 我对此进行了调试 发现 JavaFX 实际上创建

随机推荐

  • 如何在 Firefox 中过滤掉上传处理程序中的目录?

    Problem 我有以下代码片段 用于在文件拖放上传期间获取文件信息 var files event dataTransfer files for var i 0 i lt files length i var file files i I
  • 计算新列作为 pandas 中其他列的平均值[重复]

    这个问题在这里已经有答案了 我有一个这个数据框 我想计算一个新列作为平均值salary 1 salary 2 and salary 3 df pd DataFrame salary 1 230 345 222 salary 2 235 37
  • 如何跟踪 C++ 中的内存分配(尤其是新建/删除)[重复]

    这个问题在这里已经有答案了 我如何跟踪 C 中的内存分配 尤其是由new delete 对于一个对象 我可以轻松地覆盖operator new 但我不确定如何全局覆盖所有分配 以便它们通过我的自定义new delete 这应该不是一个大问题
  • 另一种 Quantmod ZigZag 叠加

    我目前正在使用quantmodZigZag 叠加 我注意到它的计算方式与原始叠加有点不同 我已经证明了以下差异picture https i stack imgur com YER0M gif使用 ZigZag 5 的 RDWRquantm
  • 如何在没有第一次提交的情况下撤消 git rm -rf dirname ?

    I did git init git add git rm rf dirname 看了其他答案 git reset hard HEAD git checkout f and git reflog不起作用 显然是因为没有可以返回的 HEAD
  • 如何在同一页面切换多个react组件

    我有一个使用 Material ui 列表构建的用户仪表板 对于每个 listItem 我都有一个组件 我想要的是 当我单击列表元素时 有一个专门用于切换组件的部分 我在实现这个时遇到困难 这是我的代码 我不知道该放在哪里onClick处理
  • SecurityException:权限拒绝:通过显式意图启动 Activity 时

    我正在读关于在活动中声明权限 https developer android com guide components activities intro activities dp 根据文档 您可以使用清单的标签来控制哪些应用程序可以启动特
  • 在 QVBoxLayout 中查找选中的 QRadioButton

    我使用下面的代码动态创建一组单选按钮 self wPaymantType qgbSomeSelectionGroup QtGui QGroupBox vbox QtGui QVBoxLayout for row in listOfChoic
  • 使用VB.Net获取图像宽度和高度

    在 VB net 中 我需要读取一个充满图像的文件夹并获取它们 文件名 像素高度和像素宽度 并将它们的值分配给各个变量 thanks Mike 尝试这个 Imports System IO Imports System Drawing Mo
  • cmdline-tools:无法确定 SDK 根目录

    C Android sdk bin gt sdkmanager错误 无法确定 SDK 根目录 错误 要么明确指定它 sdk root 或将此包移动到预期位置
  • 从两个向量(名称、值)创建命名列表

    有没有办法在两个向量上使用 mapply 来构造命名列表 第一个向量的类型为character并包含用于列表的名称 而第二个包含值 到目前为止 我唯一的解决方案是 gt dummyList list gt addToList lt func
  • 流星没有开始

    我在启动 Meteor 示例时遇到问题 这就是我打字时得到的meteor在应用程序文件夹中 parties Unexpected mongo exit code 100 Restarting Unexpected mongo exit co
  • 使用 Phonegap 和 AngularJS 的 HTML5 模式

    我正在尝试使 AngularJS html5 模式 true 与 Phonegap 一起使用 我之前做了很多搜索来发布这个 我尝试了不同的组合 配置 在元中添加 标签 也尝试使用 和 添加 html 后缀到路由端点 在 config 块内添
  • 如何选择每月最高消费客户

    我有一个列出日期 customerID orderID 和 orderCost 的视图 如何选择每月最高消费客户 该数据仅涵盖2015年的六个月时间 我能够获得每个客户每月花费的总和 但不能获得最大支出客户 SELECT EXTRACT Y
  • 独立的 getter/setter 方法,还是组合的?

    在处理一个项目时 我一直在进行一些更改并浏览现有框架 API 文档以获取见解 在仔细阅读 Kohana 文档时 我注意到任何给定类的 getter setter 通常都是组合在一起的 public function someProperty
  • iOS拍照倒放的处理方法

    我在网站上使用输入字段 以便用户可以给自己拍照 在 iPad iPhone 上 生成的图片是颠倒的 如何轻松检测用户是否使用相机 以便我通过 Javascript 旋转图像 之后我在 Javascript Canvas 中使用该图片 我得到
  • 使用通用通配符代替接口

    如果你想存储类型的对象数组MyInterface 以下两种形式都可以接受吗 如果可以的话 您什么时候会使用第二种形式而不是第一种形式 i 仅使用一个接口 List
  • Matplotlib 绘图窗口未使用 command-w 关闭

    我在我的Mac上使用ipython3 版本如下 Python 3 5 2 Anaconda custom x86 64 default Jul 2 2016 17 52 12 and matplotlib版本2 0 0 我改变了后端maco
  • 哎呀!使用保留字来命名列

    我制作了一个 bigquery 表 其中有一列名为 row 无引号 doh 现在 如果我引用该列 我的 sql 将无法编译 SELECT row etext FROM hcd hdctext LIMIT 1 ERROR 我没有看到 ROW
  • 如何在Java中使用snake yaml序列化具有自定义名称的字段

    我正在尝试序列化具有如下字段的 Java 实例 public class Person private String firstName private String lastName public String getFirstName