【发布时间】:2011-05-02 12:43:51
【问题描述】:
有没有一个 java yaml 库和 Android 上的snakeyaml 一样好? (或者是否有人已经在 Android 上成功使用了snakeyaml?)
【问题讨论】:
有没有一个 java yaml 库和 Android 上的snakeyaml 一样好? (或者是否有人已经在 Android 上成功使用了snakeyaml?)
【问题讨论】:
我不认为你可以在不修改的情况下在 Android 上使用 SnakeYaml(至少现在是这样)。
默认情况下,SnakeYaml 使用Introspector 为类获取PropertyDescriptors,而我可以看到java.beans.Introspector 在Android 上不可用。但是 SnakeYaml 中有 BeanAccess.FEILD 模式,它使用字段来转储/加载 bean。该模式仅使用 Android 上可用的 java.lang.reflect 类。
因此,经过一些修改,它可能会起作用。但我需要尝试一下才能确定。
已添加
现在可以使用 SnakeYaml 构建 Android 兼容版本:
mvn -Pandroid clean package
更新(2017 年 3 月):
从 1.18 开始,android 构建处于中心位置。您可以像这样将依赖项添加到您的 pom.xml 中
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
<version> VERSION </version>
<classifier>android</classifier>
</dependency>
或在您的build.gradle 中像这样:
implementation "org.yaml:snakeyaml:1.18:android"
【讨论】:
BeanAccess.xxx 模式,它始终是BeanAccess.FIELD。请尝试一下。我创建了一个关于 Android code.google.com/p/snakeyaml/issues/detail?id=92 的问题,请随意将 cmets 放在那里。
我认为你至少应该直接尝试snakeyaml。对于此类库,所需的 Java API 集很可能在 Android 中可用。
如果不行,你可以尝试在android项目中导入snakeyaml源代码,看看有什么编译不出来。运气好的话,可以解决缺少的 API。
【讨论】:
来自How do I convert from YAML to JSON in Java?的回答
String convertYamlToJson(String yaml) {
ObjectMapper yamlReader = new ObjectMapper(new YAMLFactory());
Object obj = yamlReader.readValue(yaml, Object.class);
ObjectMapper jsonWriter = new ObjectMapper();
return jsonWriter.writeValueAsString(obj);
}
要求:
implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.7.4'
【讨论】: