我有一个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
答案 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)