NutzCN Logo
问答 @OK JSON 转义
发布于 2243天前 作者 herexu 3018 次浏览 复制 上一个帖子 下一个帖子
标签:
  @Ok("json")

想转

text = "\uF21A"
color = "#000000"
weight = "normal"
placement = "point"
fontSize = {Integer@8953} 12

结果转义的时候多出了个\

"text": {
"text": "\\uF21A",
"color": "#000000",
"weight": "normal",
"placement": "point",
"fontSize": 12
}
8 回复
    public static void main(String[] args) {
        NutMap map = new NutMap();
        map.put("text", "\uF21A");
        map.put("text2", "\\uF21A");
        System.out.println(Json.toJson(map));
    }

输出

{
   "text": "",
   "text2": "\\uF21A"
}

所以, 你以为text是 "\uF21A", 实际是 "\uF21A"

@wendal 有点不太理解了,
1、为什么测试方法第一个text打印出来是空的
2、我提问题的那个是bean对象tojson 即使用 @Ok("json"),出来的结果是 "text": "\uF21A",
我的bean是这样的

public class Text {
    /**
     * 标注文字
     */
    private String text;
    /**
     * 文字颜色
     */
    private String color;
    /**
     * 文字 粗细
     */
    private String weight;
    /**
     * 文字位置
     */
    private String placement;
    /**
     * 文字大小
     */
    private Integer fontSize;
}

并不是空,只是无法显示

    public static void main(String[] args) {
        NutMap map = new NutMap();
        map.put("text", "\uF21A");
        map.put("text2", "\\uF21A");
        System.out.println(Json.toJson(map, JsonFormat.full().setAutoUnicode(true)));
    }

输出

{
   "text": "\uF21A",
   "text2": "\\uF21A"
}

对应的注解

@Ok("json:{autoUnicode:true}") // 后面的Json字符串本身就是JsonFormat

@wendal 这个注解我试过了,无法达到我想要效果

"text": {
"text": "\uF21A",
"color": "#000000",
"weight": "normal",
"placement": "point",
"fontSize": 12
}

其实我现在要的是这个,有没有办法呢

在字段上写个@JsonField(forceString=true) 也许行

@wendal 加了,不得行呀,好难受

那就只能加工一下text咯

obj.text = (String)Json.fromJson('"' + obj.text + '"'); // 双引号包起来,转成正确的String表达

@wendal 成了,谢谢兽总,么么哒

添加回复
请先登陆
回到顶部