【问题标题】:Emoijis in JSON, DatapowerJSON 中的表情符号,Datapower
【发布时间】:2017-11-01 13:48:25
【问题描述】:

我有一个请求是 JSON 的 mpgw。 我使用 JSON.stringify(json) 将内容保存在上下文变量中 问题是当 json 包含表情符号时,例如 \uD83D\uDE0D tha 变量不再是字符串,它将是二进制的并且表情符号显示为点。 我需要稍后使用变量的内容来计算 hmac,因此它必须看起来与原始 json 完全相同。

有没有办法解决这个问题? 非常感谢您的帮助。

我们正在运行固件:IDG.7.5.2.9

/乔克·D

【问题讨论】:

  • 您能否详细说明如何将字符串存储到上下文变量中?也许使用的代码或操作?
  • 我使用:session.input.readAsJSON(function (error, json) 读取输入,然后使用:ctx.setVar('json', JSON.stringify(json));

标签: json ibm-datapower


【解决方案1】:

好的,从您的评论中我可以得出结论,是 Stringify() 搞砸了。这是根据用于转义的食谱(有一个 RFC 对此进行描述)...

尝试为 stringify() 添加您自己的函数,以更好地处理 unicode:

function JSON_stringify(s, emit_unicode) {
   var json = JSON.stringify(s);
   return emit_unicode ? json : json.replace(/[\u007f-\uffff]/g,
      function(c) { 
        return '\\u'+('0000'+c.charCodeAt(0).toString(16)).slice(-4);
      }
   );
}

ctx.setVar('json', JSON_stringify(json, false));

类似的...

【讨论】:

    猜你喜欢
    • 2018-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-27
    • 2011-11-02
    • 2011-07-04
    • 2019-06-25
    • 1970-01-01
    相关资源
    最近更新 更多