是否有任何 JSON 漂亮的打印机需要格外注意简洁
Are there any JSON pretty-printers that take extra care to be concise?
我想要一个漂亮的JSON打印机,它可以识别数组或对象何时适合一行并做到这一点。例:
{
"fits": ["JSON", "pretty", "printer"],
"longer": [
"???????????????????????????????????????????????????",
"???????????????????????????????????????????????????",
"???????????????????????????????????????????????????",
"???????????????????????????????????????????????????",
"???????????????????????????????????????????????????"
]
}
有这样的独立库吗?如果没有,我将如何去写一个?
我最感兴趣的是 JavaScript 实现。
我不知道
任何如此简洁的JSON打印机,但是如果您愿意,制作自己的打印机应该不难:
- 可以使用
for(property in object)
循环访问给定对象的属性。- 根据用例,您可能希望使用
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);
相关文章:
- 在 JavaScript 数组中的所有元素之间穿插元素的简洁方法
- 使用window.print()打印到不同的打印机
- javascript可以获取或设置打印机信息
- 使用异步模块的Express + Mongoose请求处理程序的更简洁的方法
- 链接承诺和传递价值的简洁方式
- 有没有更简洁的方法可以从带有 lodash 的数组中删除条目
- 如何打印网页中的所有图像?(打印机)
- 如何在 iOS 上的 NativeScript 中显示打印机选取器
- 如何在PHP中将Excel文档发送到打印机
- 如何将这个简单的switch语句重写得更简洁
- JavaScript if语句的简洁方式
- 我应该如何在打印时删除打印机图像
- 在轨道上打印东西(字面意思是对打印机)
- 具有简洁原型赋值语法的Javascript继承
- 如何使用java脚本获取本地机器中的默认打印机名称
- J-Query打印机(jQuery.printElement)可以'不要在歌剧中打印多页
- 在客户端打印's打印机
- 用javascript在一个对象的两个键上声明两个数组的简洁方法是什么
- 通过JavaScript与打印机通信
- 是否有任何 JSON 漂亮的打印机需要格外注意简洁