我能否在以下发言中发表一些意见?Json Json (Json Json) (Json Json Json) (Json Json) Json Json (Json Json) Json (Json) Json (Json) Json (Json) Json (Json) Json (Json) Json (Json) Json(Json) Json (Json) Json (Json) Json(Json) Json (Json) Json如果有,如何处理?


当前回答

这是"你能吗"问题。这里有一个问题,"是" "是"回答。

不,你不应该使用重复的物体成员 将侧导道数据塞进 JSON 编码中。 (见“ 对象中的名称应该是独特的 ” )二、《公约》在《公约》中).

是的,你可以插入注释周围杰逊你可以分析出来

但如果你想用一种方式 插入和提取任意的侧通道数据到一个有效的 JSON , 答案是这里。 我们利用 JSON 编码中的数据非独有的表达方式。 这允许 。*在RFC第二节“允许在六个结构字符中的任何字符之前或之后使用白色空间”。

*RFC 仅声明“ 允许在六个结构字符之前或之后使用白色空间”, 没有明确提及字符串、 数字、 “ false ”、“ true ” 和“ null ” 。 在所有执行中忽略了这一遗漏 。


首先,用简单化的方式 将你的JSON化为金字塔:

$jsonMin = json_encode(json_decode($json));

然后将您的评论编码为二进制 :

$hex = unpack('H*', $comment);
$commentBinary = base_convert($hex[1], 16, 2);

然后将您的二进制评分:

$steg = str_replace('0', ' ', $commentBinary);
$steg = str_replace('1', "\t", $steg);

以下是您的输出 :

$jsonWithComment = $steg . $jsonMin;

其他回答

JSON对于配置文件和其他本地使用非常有意义, 因为它无处不在, 而且因为它比XML简单得多。

如果人们有强烈理由反对在JSON上发表评论(无论是否有效),那么JSON可能会被分成两个:

  • JSON在线上,或者在传送JSON数据时适用的规则。
  • JSON文件,或档案或本地的JSON文件,界定有效的JSON文件的规则。

JSON-DOC 将允许评论,而其他微小差异可能也存在,比如处理白色空间。 采集器可以很容易地从一个孔转换成另一个孔。

关于下列事项:评论评论评论评论评论评论由Douglas Crockford就该问题撰写的文章(由@Artur Czajka引用)

假设您正在使用 JSON 保存配置文件, 您想要对此进行注释 。 请继续插入您想要的所有评论 。 然后通过 JSMIN 管道将其传送给您的 JSON 分析员 。

我们谈论的是通用配置文件问题(跨语言/平台), 他用联署材料特定工具回答!

可以用任何语言执行JSON的具体简洁, 但将其标准化, 使得它变得无所不在, 在所有语言和平台的旁听者之间无处不在, 所以人们不再浪费时间 缺乏功能,因为他们有良好的使用案例, 在网上论坛研究这个问题, 让人们告诉他们这是一个坏主意, 或者说很容易执行 从文本文档中删除评论。

另一个问题是互操作性。 假设你有一个图书馆或 API 或任何子系统, 与它相关联的配置或数据文件。 这个子系统将用不同语言访问 。 那么您是否要告诉人们: 顺便说一句, 请不要忘记在将 JSON 文档的评语转至解析器之前先删除 JSON 文档中的评论 !

还有其他图书馆与JSON兼容,

其中一个显著的例子是:“Hashcorp语言”(HCL)” (HCL)由那些制造流浪者、包装者、领事和保险库的人共同撰写。

*.json文件通常用作配置文件或静态数据,因此需要评论 * NetBeans等编辑在 *.json中接受评论。

问题在于将内容解析到对象上。 解决方案是总是应用清洁功能( 服务器或客户端 ) 。

普 普 普 尔

 $rgx_arr = ["/\/\/[^\n]*/sim", "/\/\*.*?\*\//sim", "/[\n\r\t]/sim"];
 $valid_json_str = \preg_replace($rgx_arr, '', file_get_contents(path . 'a_file.json'));

贾瓦史克里普特

valid_json_str = json_str.replace(/\/\/[^\n]*/gim,'').replace(/\/\*.*?\*\//gim,'')

纯粹的答案是否 无.

但有些编辑和平台利用变通办法向JSON提供评论。

1今天,大多数编辑都有内在的选择和扩展,以补充对JSON文件的评论。 (例如: - VS 代码还有一个带有评论的JSON。(jsonc) mode《VS法典》也有很好的展期)

VsCode 中激活 jsonc 模式的链接

2一些平台为补充评论(简简json)提供了内在途径。 (例如:- 在消防基地,我可以评论firebase.json暂时没有问题。

    {
    "hosting": {
        "headers": [
            /*{
              "source": "*.html",
              "headers": [
                {
                  "key": "Content-Security-Policy",
                  "value": "default-src 'self' ..."
                }
              ]
            },*/
        ]
      }
    }

3。在您自己的 JSON 解析方法中,您可以设置一个预定义的密钥名称作为注释。

包括:-

     {
        "comment" : "This is a comment",
        "//" :  "This also comment",
        "name" : "This is a real value"
     }

是的,你可以发表意见,但我建议不提出上述任何理由。

我做了一些调查, 我发现所有JSON需要的方法 使用JSON.parse方法。所以我找到了一个解决方案: 我们可以在JSON.parse周围取代或修补猴子。

注:仅用节点js测试;-)

var oldParse = JSON.parse;
JSON.parse = parse;
function parse(json){
    json = json.replace(/\/\*.+\*\//, function(comment){
        console.log("comment:", comment);
        return "";
    });
    return oldParse(json)
}

JSON 文件 :

{
  "test": 1
  /* Hello, babe */
}