JsonOutput.toJson、prettyPrint等方法,中文被转义

李云
2018-06-14 11:40

问题描述

使用了 JsonOutput 的 prettyPrint 方法或者 toJson 方法,返回的字符串中,中文被转义为 \u738b 的形式

解决方案

\u738b 为 Unicode 字符。解决方法是解析 Unicode 字符为中文字符。

package org.qadoc.groovy.util

import groovy.json.JsonOutput
import org.apache.commons.lang3.StringEscapeUtils

/**
 * JSON工具类
 * author:李云
 * time:2018-05-08
 */
class JsonUtils{

    /**
     * 对象转JSON字符串(中文不转义)
     * @param object 对象
     * @return 未转义的JSON字符串
     */
    def static String toJson(Object object){
        //普通对象转JSON文本:如果文本中有中文,中文会转义为Unicode字符
        //例如:groovy.json.JsonOutput.toJson("李云")
        //OutPut: "\u674e\u4e91"
        def jsontext = JsonOutput.toJson(object)
        //处理JSON文本中的Unicode字符
        return StringEscapeUtils.unescapeJava(jsontext)
    }

}
标签: Groovy
平均分: 0 (0 投票)

你可以对此问答发表评论