- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 Elastic Search,我遇到了一个名为 ReadOnlyRest 的插件,用于 Auth 目的。要设置此插件,我们需要将用户添加到 Elastic search yml。
所以我搜索了如何使用 Java 将 "key : value"
对数据添加到 yml。遇到 SnakeYAML 添加数据。
我可以从 Java 发送用户数据。
Java 代码。
package com.test.elasticsearch;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.log4j.Logger;
import org.yaml.snakeyaml.DumperOptions;
import org.yaml.snakeyaml.Yaml;
public class YAMLSample {
protected static Logger logger = Logger.getLogger(YAMLSample.class);
final String fileName = "/home/Installation/elasticsearch-2.3.1/config/elasticsearch.yml";
public void writeToYML() throws IOException {
logger.debug("Write to YML");
Map<String, Object> data = new HashMap<String, Object>();
data.put("name", "user5");
data.put("type", "allow");
data.put("auth_key", "user5:user5");
data.put("kibana_access", "ro");
data.put("indices", new String[] { ".kibana*", "abc", "def" });
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
list.add(data);
DumperOptions options = new DumperOptions();
options.setIndent(5);
Yaml yaml = new Yaml(options);
FileWriter writer = new FileWriter(fileName, true);
yaml.dump(list, writer);
logger.debug("DONE!");
}
public static void main(String[] args) throws IOException {
// new YAMLSample().readYML();
new YAMLSample().writeToYML();
}
}
以上代码的输出是:
- name: user5
indices: [.kibana*, abc, def]
kibana_access: ro
type: allow
auth_key: user5:user5
但是,预期的输出是:
- name: user5
indices: [.kibana*, abc, def]
kibana_access: ro
type: allow
auth_key: user5:user5
“Hyphen-minus”应该只有一个空格,在“Hyphen-minus”之前应该有 4 个空格。
我的意思是说我希望它显示为用户数组。除了“Hyphen-minus”之外还有几个空格。
请帮助我找出解决方案。
最佳答案
我已经修改了您的代码并得到了预期的结果。下面是代码的样子:
public class YAMLSample {
final String fileName = "/tmp/rest.yml";
public void writeToYML() throws IOException {
log( "Write to YML" );
Map<String, Object> user = new HashMap<>();
user.put( "name", "user5" );
user.put( "type", "allow" );
user.put( "auth_key", "user5:user5" );
user.put( "kibana_access", "ro" );
user.put( "indices", new String[] { ".kibana*", "abc", "def" } );
Map<String, Object> user2 = new HashMap<>();
user2.put("name", "user2");
user2.put("type", "allow");
user2.put("auth_key", "user2:user2");
user2.put("kibana_access", "ro");
user2.put("indices", new String[] { ".kibana*", "abc", "def" });
List<Map<String, Object>> list = new ArrayList<>();
list.add(user);
list.add(user2);
Map<String, List<Map<String, Object>>> config = new HashMap<>();
config.put( "access_control_rules", list );
DumperOptions options = new DumperOptions();
options.setIndent( 6 );
options.setIndicatorIndent( 4 );
options.setDefaultFlowStyle(DumperOptions.FlowStyle.AUTO);
Yaml yaml = new Yaml(options);
FileWriter writer = new FileWriter(fileName, true);
yaml.dump( config, writer );
log( "DONE!" );
}
public static void main(String[] args) throws IOException {
new YAMLSample().writeToYML();
}
public void log(String str) {
System.out.println(str);
}
}
基本上我将这两个选项添加到您的 Dumperoptions.setIndicatorIndent(4);
options.setDefaultFlowStyle(DumperOptions.FlowStyle.AUTO);
并将 options.setIndent(6);
关于java - 使用 SnakeYAML Java 将用户添加到 yml 文件作为嵌套在 block 序列中的 block 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37346448/
我正在尝试使用 Java 中的 SnakeYaml 解析 YAML 文件,并且我正在努力让它通过 setter 构建我的模型对象。我从 SnakeYaml 文档中了解到,当您使用遵循 JavaBean
我正在尝试使用 snakeyaml 将下面的 YAML 反序列化到下面的域模型中,但是我不断收到 java.lang.ClassCastException: java.util.LinkedHashM
这是我的问题。我有包含以下对的 YAML 文档: run_ID: 2010_03_31_101 当这个 get 被解析时 org.yaml.snakeyaml.constructor.SafeCons
我在程序中有以下无法更改的类结构: class Node { public String name; } class Nodes { public List nodes; } cla
我想解析 config.yaml 文件,但遇到了一些问题。 这是我的 JavaBean 代码 Oss.class: import lombok.Data; import java.util.List;
据我所知,关于 yaml 命名约定的建议似乎是遵循软件约定,因此在我的例子中是 Java。 我收到了一个具有以下语法的 yaml 文件 PERSON: NAME: John Doe 除非我从一个人
我正在尝试使用snakeyaml在java中创建YAML文件,但我无法获取我需要的格式。使用 DumperOptions.FlowStyle.BLOCK 时,某些子项的格式正确,而使用默认 Dumpe
我正在使用 SnakeYAML 作为项目的 YAML 解析器,但我不知道如何设置嵌套的键。例如,这是一个包含嵌套键的 YAML 文件。 control: advertising: enab
我正在尝试使用 snakeyaml 将下面的 YAML 反序列化到下面的域模型中,但是我不断收到 java.lang.ClassCastException: java.util.LinkedHashM
当这是我的 .yml 文件时: test1: "string1" test2: test3: "string2" 如何获取test3的值? Map yamlFile = new Yaml().lo
我正在使用snakeYaml (snakeyaml-engine-2.1) 来序列化pojo。 Atm 序列化产生以下输出 name: "OuterYamlElementName" label: "O
在列表内部,我想多次引用同一个实例对象: - text: Here is an object with some data that will allow an image to be generat
我正在尝试从纯java字符串创建一个yaml文件。但是,我创建的 yaml 文件的初始行为: |2 yaml 文件的其余部分很好,但第一行非常有趣。我的 DumperOptions 如下; Dumpe
我一直在努力设置我的配置以使用 SnakeYAML。我希望我的配置如下所示: connection: bind-ip: 0.0.0.0 plugin-port: 2011 rt
我正在尝试使用 Groovy 和 Snakeyaml 解析以下 YAML 文件(显然我已经清理了数据,但这足以证明问题): --- info: summary: Snakeyaml Issue e
我想使用 SnakeYAML(或其他解析器)解析 Docker-compose.yml。我遇到的问题是属性可以是字符串或更复杂的对象,例如 configs ,支持“短”语法和“长”语法: 简短 ver
考虑以下代码: public void testDumpWriter() { Map data = new HashMap(); data.put("NAME1", "Raj"); data.put(
我使用以下方法将对象转换为 yaml 表示(例如,我可以打印到控制台) @Nonnull private String outputObject(@Nonnull final ObjectToPrin
我的意图是使用 jackson 获得像 JSON 中那样的多态集合,也许借助标签。 我似乎无法正确配置它。 我的 yaml 文件是: !person age: 27 job: dev name: me
本文整理了Java中org.yaml.snakeyaml.Yaml类的一些代码示例,展示了Yaml类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一
我是一名优秀的程序员,十分优秀!