如何使用UTF-8编码的数据使用Groovy JsonOutput.toJson?

时间:2016-07-25 14:03:42

标签: json unicode encoding groovy utf-8

我有一个UTF-8编码的文件。

我编写了一个groovy脚本来加载一个带有JSON结构的文件,修改它并保存它:

function yourprefix_register_meta_boxes( $meta_boxes ) {
    $prefix = 'metaboxprefix_';

    $meta_boxes[] = array(
        'id'         => 'samplefield',
        'title'      => __( 'Your Meta Box Title', 'yourtextdomain' ),
        'post_types' => 'post',
        'context'    => 'normal',
        'priority'   => 'high',
        'fields' => array(
            array(
                'name'  => __( 'Your Text Field', 'yourtextdomain' ),
                'id'    => $prefix . 'yourfieldid',
                'type'  => 'text',
            ),
        )
    );

    return $meta_boxes;
}
add_filter( 'rwmb_meta_boxes', 'yourprefix_register_meta_boxes' );

问题是def originPreviewFilePath = "./xxx.json" //target the file def originFile = new File(originPreviewFilePath) //load the UTF8 data file as a JSON structure def originPreview = new JsonSlurper().parse(originFile,'UTF-8') //Here is my own code to modify originPreview //Convert the structure to JSON Text def resultPreviewJson = JsonOutput.toJson(originPreview) //Beautify JSON Text (Indent) def finalFileData = JsonOutput.prettyPrint(resultPreviewJson) //save the JSONText new File(resultPreviewFilePath).write(finalFileData, 'UTF-8') 将UTF-8数据转换为UNICODE。我不明白为什么JsonOutput.toJson可以使用UTF-8但不能使用JsonSlurper().parse

如何JsonOutput.toJson使用UTF-8?我需要与JsonOutput.toJson

完全相反

2 个答案:

答案 0 :(得分:1)

万一有人还在为此苦苦挣扎,解决方案是禁用Unicode转义:

new JsonGenerator.Options()
    .disableUnicodeEscaping()
    .build()
    .toJson(object)

答案 1 :(得分:0)

我认为编码在读取时会应用于错误的语句。

更改以下声明:

def originFile = new File(originPreviewFilePath)
def originPreview = new JsonSlurper().parse(originFile,'UTF-8')

def originFile = new File(originPreviewFilePath).getText('UTF-8')
def originPreview = new JsonSlurper().parseText(originFile)