Emoijis在JSON、Datapower中

Emoijis在JSON、Datapower中,json,ibm-datapower,Json,Ibm Datapower,我有一个mpgw,其中请求是JSON。 我使用JSON.stringify(JSON)将内容保存在上下文变量中 问题是,当json包含emoiji eg\uD83D\ud0d时,变量将不再是字符串,而是二进制,emoijis显示为点。 稍后我需要使用变量的内容来计算hmac,因此它必须看起来与原始json完全相同 有没有办法绕过这个问题? 我将非常感激你的帮助 我们正在运行固件:IDG.7.5.2.9 /Jocke D好吧,从你的评论中我可以得出结论,是Stringify()把事情搞砸了。这是根

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

有没有办法绕过这个问题? 我将非常感激你的帮助

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


/Jocke D

好吧,从你的评论中我可以得出结论,是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));

诸如此类……

好吧,从你的评论中我可以得出结论,是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));

诸如此类……

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