HarmonyOS鸿蒙Next中CJ:仓颉JsonValue转String的转义符号如何去掉

HarmonyOS鸿蒙Next中CJ:仓颉JsonValue转String的转义符号如何去掉 09-15 11:13:09.699   18876-18876   A00000/WinSfa—>                 spec000------"{“filter”:“https://sfa-uat.corpnet5.com:7001/modules/report_db/index.jsp”}"

09-15 11:13:09.699   18876-18876   A00000/WinSfa—>                 spec111------"{“filter”:“https://sfa-uat.corpnet5.com:7001/modules/report_db/index.jsp”}"

09-15 11:13:09.698   18876-18876   A00000/WinSfa—>                  spec000------"{“required”:“O”,“maxRow”:“1000”,“ds”:“dicts”,“filter”:“cxhd6”,“redis”:“1”,“FcharNum”:"",“opt”:{“name”:“活动名称”,“isMore”:“0”},“param”:[{“col”:“col1”,“name”:“促销活动选择”,“tpy”:“C”,“max”:"",“min”:"",“pcs”:"",“redis”:“1”,“charNum”:“15”},{“col”:“col2”,“name”:“备注”,“tpy”:“CHT”,“max”:“200”,“min”:“0”,“pcs”:"",“redis”:“1”,“charNum”:“10”}]}"

09-15 11:13:09.698   18876-18876   A00000/WinSfa—>                spec111------"{“required”:“O”,“maxRow”:“1000”,“ds”:“dicts”,“filter”:“cxhd6”,“redis”:“1”,“FcharNum”:"",“opt”:{“name”:“活动名称”,“isMore”:“0”},“param”:[{“col”:“col1”,“name”:“促销活动选择”,“tpy”:“C”,“max”:"",“min”:"",“pcs”:"",“redis”:“1”,“charNum”:“15”},{“col”:“col2”,“name”:“备注”,“tpy”:“CHT”,“max”:“200”,“min”:“0”,“pcs”:"",“redis”:“1”,“charNum”:“10”}]}"

spec000 —是JsonValue类型的输出,spec111------是toString()之后的输出,转换之后和转换之前没什么区别

JsonVaue类型的数据,toString()调用之后,输出的语句中还是有转移字符“  \”,“\r”,“\n”,如何解决?

不能采用替换\的方案,因为有的字段是url路径,带有\,例如这种的,

let str = “{“icon”:”\\photos\\menuicon_TB_F10_AT25\\1754050798328.png",“opt”:{“independentShowSub”:“Y”}}";


更多关于HarmonyOS鸿蒙Next中CJ:仓颉JsonValue转String的转义符号如何去掉的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

如果是拿数据的话,看能不能直接操作JsonValue对象的具体字段,获取其原始值而非整体转换后的字符串,例如:

var jv = JsonValue.fromStr("[true, \"kjjjke\\\"eed\"]") // 示例输入含转义符的字符串
var secondElement = jv.asArray()?.get(1)?.asString() // 直接提取数组第二个元素的字符串值
println(secondElement) // 输出:kjjjke"eed(已去除转义符)

更多关于HarmonyOS鸿蒙Next中CJ:仓颉JsonValue转String的转义符号如何去掉的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,CJ(仓颉)的JsonValue转String时,转义符号是JSON序列化过程中自动添加的,用于确保字符串符合JSON规范。若需去除转义符号,可通过调用相关序列化方法并设置参数控制输出格式,或使用字符串处理函数对结果进行后处理移除转义字符。具体实现需参考鸿蒙SDK中Json库的接口文档。

在HarmonyOS Next中,JsonValue的toString()方法默认会保留JSON字符串中的转义符号(如"、\等),这是符合JSON规范的正常行为。若需要去除这些转义符号,可通过以下方式处理:

  1. 使用JSON.parse()解析为对象后,再按需拼接字符串:
let jsonValue = ...; // 获取JsonValue对象
let jsonString = jsonValue.toString();
let parsedObj = JSON.parse(jsonString); // 解析为JS对象
// 若需重新生成无转义的字符串,可遍历对象属性手动拼接
  1. 直接处理字符串(注意风险): 若确定内容结构且需保留原始反斜杠(如路径中的\\),可通过正则表达式替换特定转义符:
let result = jsonString.replace(/\\"/g, '"').replace(/\\\\/g, '\\');

但需谨慎处理,避免误替换有效反斜杠。

建议优先采用第一种方式,通过解析为对象后按需处理,更安全可靠。

回到顶部