首页 > 解决方案 > 用 JSON 字符串中的 hex 替换所有 r、g、b 值

问题描述

const jsonString = JSON.stringify(myJson, null, 2);

 {
      "object1": {
        "subobject1": {
          "r": 0,
          "g": 0,
          "b": 0
        },
        "someOtherProperty": 1
      },
      "allColors": {
        "object2": [
          {
            "subobject2": {
              "r": 4,
              "g": 5,
              "b": 6
            },
            "subobject3": {
              "r": 7,
              "g": 8,
              "b": 9
            },
            "subobject4": {
              "r": 9,
              "g": 10,
              "b": 11
            }
          }
    ......
    ......
    }

什么是正确的正则表达式和 JS在同一字符串对象中用十六进制替换所有r, g,值的方法?b例如:

   "subobject2": {
      "r": 4,
      "g": 5,
      "b": 6
    }

会变成:

"subobject2": "#040506"

标签: javascript

解决方案


var rgb = {
  "red": 32,
  "green": 38,
  "blue": 46
}

function tohex(color) {
  function tohex2(dec) {
    hex = Math.max(0, Math.min(255, dec)).toString(16);
    if (hex.length == 1) hex = "0" + hex;
    return hex;
  }
  return "#" + tohex2(color["red"]) + tohex2(color["green"]) + tohex2(color["blue"]);
}

rgb = tohex(rgb);

// rgb = #20262e

推荐阅读