【问题标题】:Strange JSON.Stringify() Behaviour [duplicate]奇怪的 JSON.Stringify() 行为
【发布时间】:2013-08-14 09:50:29
【问题描述】:

我不确定这是奇怪的行为还是我做错了什么,请检查一下 -

{
 "query": {
     "bool" : {
        "should" : {
                    "match" : { "pty_forename" : "nathan" }
                   },
        "should" : {
                    "match" : { "pty_surname" : "smith" }
                   }
              }
         }
}

将其复制并粘贴到JSONLint 中,看看会发生什么,每当我尝试使用 JSON.Stringify() 解析它时,都会发生完全相同的事情。实际问题是我试图解析的所有内容都没有成功解析,即丢失 -

"should":{
          "match" : {"pty_forename": "nathan"}
}

我做错了什么,谁能提供一些见解?

谢谢。

【问题讨论】:

  • 这里似乎有什么问题?您有重复的键相互覆盖。
  • "有效 JSON","发生完全相同的事情" --- 如果在两种情况下都成功 - 恭喜。
  • 我不认为你能有太“应该”这样。具有相同名称和不同值的两个属性。
  • 要么将其更改为列表"should": [....],要么重新设计。
  • @NSmeef:我确定你对格式感到困惑。再看看格式要求

标签: jquery json parsing web


【解决方案1】:

如果你有几个“应该”,它们应该像这样放在一个数组中:

{
 "query": {
     "bool" : {
        "should" : [{
                    "match" : { "pty_forename" : "nathan" }
                   },{
                    "match" : { "pty_surname" : "smith" }
                   }]
              }
         }
}

或者像这样:

{
 "query": {
     "bool" : 
     [{ 
    "should" : { "match" : { "pty_forename" : "nathan" }},
    "should" : { "match" : { "pty_surname" : "smith" }}
    }]
}
}

一切都取决于您想要的实现。 Example from W3 Schools.

【讨论】:

  • 提供一个使用OP的数据结构的例子怎么样?
  • 因此您将 2 个should 合并为一个,但将matches 保留为单独的对象。看起来不一致
  • 嗯,这取决于你想要做什么。这样,您将“应该”包含几个具有“匹配”属性的对象。它可以正常工作,具体取决于 OP 没有提供任何细节的实现......
  • 确实,无论哪种方式都只是猜测
  • 人们也可以在“bool”上分组,而不是通过移动方括号将两个“应该”“对象”括起来来创建包含多个“应该”对象的数组。
猜你喜欢
  • 1970-01-01
  • 2014-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-08
  • 2015-07-20
  • 2010-10-03
  • 2021-07-12
相关资源
最近更新 更多