是否有JSON漂亮打印机需要特别注意以使其简洁?

| 我想要一个JSON漂亮的打印机,它可以识别数组或对象何时适合一行,然后执行该操作。例:
{
  \"fits\": [\"JSON\", \"pretty\", \"printer\"],
  \"longer\": [
    \"???????????????????????????????????????????????????\",
    \"???????????????????????????????????????????????????\",
    \"???????????????????????????????????????????????????\",
    \"???????????????????????????????????????????????????\",
    \"???????????????????????????????????????????????????\"
  ]
}
是否有像这样的独立库?如果没有,我将如何写一个? 我对JavaScript实现最感兴趣。     
已邀请:
我不知道任何这种简洁的JSON打印机,但是如果您要创建自己的JSON打印机,应该不难: 您可以使用ѭ1遍历给定对象的属性。 根据使用情况,您可能需要使用
hasOwnProperty
进行过滤。 您可以使用
typeof
确定引用是否指向对象,数组,字符串或数字 让漂亮的打印机功能接收初始压痕偏移量和要打印的对象。这可能足以决定是否应内联每个属性。 我不确定这种“贪心”策略是否始终是“最佳”策略-也许现在最好多行处理以备后用。起初我不会为此担心。     
由于JSON主要是一种数据传输格式,因此我假设您的意思是在浏览器中查看原始JSON?如果是这样,那么有一些选择: JSON Lint-检查并重新格式化JSON 上面的纯JS版本 适用于Chrome的JSONView Safari JSON格式化程序 如果您需要进一步的自定义,那么您应该能够深入了解后三个的来源。我将从遍历
value.length
属性开始,其中
value
是数组元素,以查看是否可以将输出限制为一行。     
使用替换函数将每个键/值对中的字符总数与固定长度进行比较。这是一个简单的示例:
function replacer(key, value)
  {
  var key_arr = [];
  var value_arr = [];
  var i = 0;
  for (_ in value)
    {
    key_arr.push(_);
    value_arr.push(value[_]);
    }
  for(;i < value_arr.length;i++)
    {
    if (key_arr[i].length + value_arr[i].length < 80)
      {
      console.log(key_arr[i] + \":\" + \"\\t\" + value_arr[i])
      }
    else
      {
      console.log(key_arr[i] + \":\" + \"\\n\" + value_arr[i])
      }
    }
  }
用法:
var json;

json = {\"foo\":\"1\",\"bar\":\"2\"},      
JSON.stringify(json, replacer, 4);

json = {\"foo\":\"12345678901234567890123456789012345678901234567890123456789012345678901234567890\",\"bar\":\"2\"};

JSON.stringify(json, replacer, 4);
    

要回复问题请先登录注册