StringBuilder转Json遇到的坑,创建ES索引报index patterns are missing异常

org.json使用的时候,想把jsonString转jsonObject;可以用new JsonObject(String)

但是如果用new JsonObject(StringBuilder),转换成的json为空。

测试代码如下:

public class Test {
    public static void main(String[] args) {
        StringBuilder builder = new StringBuilder();
        builder.append("{\n" +
                "\"a\":1, \n" +
                "\"b\":\"c\"\n" +
                "}");
        System.out.println("1. 打印StringBuilder:" + builder);
        System.out.println("2. 打印StringBuilder.toString:" + builder.toString());

        JSONObject builderJson = new JSONObject(builder);
        System.out.println("3. 打印StringBuilder转json:"+ builderJson);

        JSONObject builderStringJson = new JSONObject(builder.toString());
        System.out.println("4. 打印StringBuilder转json:"+ builderStringJson);
    }
}
-------------------------------------------------------
1. 打印StringBuilder:{
"a":1, 
"b":"c"
}
2. 打印StringBuilder.toString:{
"a":1, 
"b":"c"
}
3. 打印StringBuilder转json:{}
4. 打印StringBuilder转json:{"a":1,"b":"c"}

问题出现背景是,通过curl命令发送json语句,来实现创建ES的索引模板,结果一直报以下错误

后来才发现,是用new JsonObject(StringBuilder)忘了转换,导致curl发送的json是空的,所以一直报索引pattern找不到的错误;最后换成new JsonObject(StringBuilder.toString)就可以了。

原因在于:StringBuilder是一个对象,打印的时候其源码里有一个toString的方法,会自动调用;但是new JsonObject()方法是,将json字符串转成json对象;所以StringBuilder直接转json对象,就是空的了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值