Javascript模板双引号

时间:2016-01-11 09:48:10

标签: javascript jscodeshift

我遇到一个问题,我的文件包含

形式的对象
Dog1: {
  information: {
    color: 'red',
    name: 'Tom'
  }
}

我正在构建一个程序,它自动从文件中填充我的对象,但当前输出的格式为

"Dog1": {
  "information": {
    "color": "red",
    "name": "Tom"
  }
}

我的问题是我需要围绕“红色”和“汤姆”的单引号或双引号,但我不需要其他所有内容。我已经尝试过使用jscodeshift但似乎无法让它运行起来。有人对此有任何提示吗?

非常感谢你的时间,乔

2 个答案:

答案 0 :(得分:0)

您的对象是JavaScript对象吗? 但是对象被写入文件,似乎是用JSON格式编写的(JavaScript Object Notation)。

在我看来,那不错。这是存储JavaScript对象的正确方法。如果你真的不想要引号,你可能需要实现自己的逻辑来将对象写入文件。

<强>更新JSON.Stringify without quotes on properties?。那家伙有同样的问题,解决方案是在调用JSON.stringify()后删除引号。

答案 1 :(得分:0)

我为您快速实现了自定义json序列化器:

function _serialize_object_key(key) {
  return /^[a-zA-Z_\$][a-zA-Z_\$0-9]*$/.test(key) ? key : JSON.stringify(key);
}
function _serialize_object(obj, opts, current_indent) {
  var arr = [], inner_indent = current_indent + opts.indent_inc;
  for (var key in obj) {
    if (obj.hasOwnProperty(key)) {
      arr.push(inner_indent + _serialize_object_key(key) + ': ' + _json_like_stringify(obj[key], opts, inner_indent));
    }
  }
  return '{\n' + arr.join(',\n') + '\n' + current_indent + '}';
}

function _serialize_array(arr, opts, current_indent) {
  var inner_indent = current_indent + opts.indent_inc;
  return '[\n' + inner_indent + arr.map(inner_map).join(',\n' + inner_indent) + '\n' + current_indent + ']';
  function inner_map(x) {
    return _json_like_stringify(x, opts, inner_indent);
  }
}

function _json_like_stringify(x, opts, current_indent) {
  switch (typeof x) {
    case "number":
    case "string":
    case "boolean":
    default:
      return JSON.stringify(x);
    case "object":
      if (x === null) return 'null';
      if (Array.isArray(x)) return _serialize_array(x, opts, current_indent);
      return _serialize_object(x, opts, current_indent);
  }
}

function json_like_stringify(x, indent) {
  if (indent === undefined) indent = 2;
  var indent_inc = '';
  for (var i = 0; i < indent; i++) indent_inc += ' ';
  return _json_like_stringify(x, {indent_inc:indent_inc}, '');
}

$('pre').text(json_like_stringify({a:[1,2,3],b:{c:{d:[6,7,"asdasda\"fgdfgdfg",true,null, [1, 2, 3, {' ':' '}, 5, 6, 7, 8, 9, 10, 11]]}}}));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<pre></pre>