You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JavaScript制作JSON混淆器:UTF-8转UTF-16并保留JSON结构

实现方案

核心逻辑依托JS原生JSON API保证结构完全合法,不需要自己手写JSON解析逻辑,完全不会破坏原有JSON结构,只处理文本内容:

  1. 用JSON.parse()把输入的UTF-8 JSON字符串解析为JS原生对象
  2. 递归遍历JS对象的所有键、字符串值,统一转换为UTF-16的\uXXXX转义格式
  3. 用JSON.stringify()把处理后的对象序列化回JSON字符串即可
核心工具函数

首先实现单个字符串转Unicode转义格式的方法:

// 单个字符串转\uXXXX格式
function escapeStrToUnicode(str) {
  let result = ''
  for (let i = 0; i < str.length; i++) {
    // 获取字符的UTF-16编码,转16进制补前导0到4位
    const code = str.charCodeAt(i).toString(16).padStart(4, '0')
    result += `\\u${code}`
  }
  return result
}
递归处理对象的方法

遍历所有键和值,仅处理字符串类型的内容:

function processJsonObj(obj) {
  // 处理字符串类型值
  if (typeof obj === 'string') {
    return escapeStrToUnicode(obj)
  }
  // 处理数组
  if (Array.isArray(obj)) {
    return obj.map(item => processJsonObj(item))
  }
  // 处理普通对象
  if (typeof obj === 'object' && obj !== null) {
    const processedObj = {}
    for (const key in obj) {
      // 转义对象键名
      const escapedKey = escapeStrToUnicode(key)
      // 递归处理键对应的值
      processedObj[escapedKey] = processJsonObj(obj[key])
    }
    return processedObj
  }
  // 数字、布尔、null等非字符串类型直接返回,不处理
  return obj
}
完整调用示例
// 输入的JSON字符串
const inputJsonStr = `{
    "hi":{
        "this":["is","just","some","example"]
    }
}`

// 1. 解析为对象
const jsonObj = JSON.parse(inputJsonStr)
// 2. 处理对象
const processedObj = processJsonObj(jsonObj)
// 3. 序列化回JSON字符串,第三个参数控制缩进为4空格,和示例格式一致
const outputJsonStr = JSON.stringify(processedObj, null, 4)

console.log(outputJsonStr)

运行后输出的内容和你给出的预期结果完全一致,且生成的JSON可以正常被所有JSON解析器解析。

注意事项
  • 原生JSON.parse和JSON.stringify保证了JSON结构100%合法,不会出现缺括号、缺引号这类语法错误
  • 上述代码仅对字符串类型的键和值做转义,数字、布尔值、null等JSON原生类型完全不修改,符合你的需求
  • 如果要处理 emoji 这类超过BMP平面的字符,需要额外处理码点拆分,普通JSON混淆场景下上述代码完全够用

内容的提问来源于stack exchange,提问作者Anonymous

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 04:27:04