首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分析YAML字符串时不能使用制表符进行缩进

分析YAML字符串时不能使用制表符进行缩进
EN

Stack Overflow用户
提问于 2015-12-14 16:57:45
回答 1查看 1.4K关注 0票数 4

我有一个表示UTF-8编码的YAML字符串的byte[],我想反序列化它.下面是我使用的通用方法:

代码语言:javascript
复制
public static <T> T getInstanceFromBinary(final Class<T> clazz, final byte[] binary, final String encoding)
        throws IOException {
    final StringReader stringReader = new StringReader(new String(binary, encoding));
    final String yamlString = stringReader.toString();
    final boolean hasTab = yamlString.contains("\t");
    final YamlReader reader = new YamlReader(stringReader);
    final T clazzInstance = reader.read(clazz);
    reader.close();
    return clazzInstance;
}

我得到了一个例外:

代码语言:javascript
复制
Caused by: com.esotericsoftware.yamlbeans.tokenizer.Tokenizer$TokenizerException: Line 185, column 35: Tabs cannot be used for indentation.
    at com.esotericsoftware.yamlbeans.tokenizer.Tokenizer.fetchMoreTokens(Tokenizer.java:313)
    at com.esotericsoftware.yamlbeans.tokenizer.Tokenizer.peekNextToken(Tokenizer.java:120)
    at com.esotericsoftware.yamlbeans.tokenizer.Tokenizer.peekNextTokenType(Tokenizer.java:125)
    at com.esotericsoftware.yamlbeans.parser.Parser$20.produce(Parser.java:320)
    at com.esotericsoftware.yamlbeans.parser.Parser.getNextEvent(Parser.java:80)
    at com.esotericsoftware.yamlbeans.parser.Parser.peekNextEvent(Parser.java:91)
    at com.esotericsoftware.yamlbeans.YamlReader.readValueInternal(YamlReader.java:270)
    at com.esotericsoftware.yamlbeans.YamlReader.readValue(YamlReader.java:152)
    at com.esotericsoftware.yamlbeans.YamlReader.readValueInternal(YamlReader.java:295)
    ... 38 more

问题是,解码后的字符串似乎不包含制表符。下面是调试的屏幕截图,它证实了这一点:

我还检查了YAMLBeans源代码,并抛出了这个异常,尽管这并没有说明发生这种情况的原因或如何解决这个问题。

提前感谢您的任何见解。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-14 17:03:12

在您的toString()上调用StringReader,它返回Object.toString()提供的神秘和无用的实现。java.io.StringReader@329dbdbf,即它不告诉您是否有选项卡。

相反,您需要在将原始String传递给StringReader之前检查它,并可能应用.replaceAll("\t", "\\t")

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34272550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档