当前位置: 首页 > 面试题库 >

如何使用重复键动态生成JSON对象?

潘辰龙
2023-03-14
问题内容

我知道这听起来是不可能的,但是我的老板告诉我,我必须通过jQuery的AJAX发布调用发送JSON,并且必须具有重复的键。问题是,如果我写这样的话:

$.post("someurl", {
     "key1" : "value1",
     "key2" : "value2",
     "key2" : "value3",
     "key2" : "value4",
     "key3" : "value5"
});

,jQuery会将请求发送为

someurl?key1=value1&key2=value4&key3=value5

所有这些都是因为Javascript会覆盖具有相同名称的属性。JSON对象是动态生成的,不允许在其中使用数组。有人可以告诉我如何生成具有重复键的JSON对象吗?

非常感谢您的帮助!


问题答案:

据我所知,{"a": "b", "a": "c"}实际上是根据RFC
4627的
有效 JSON

对象结构表示为一对大括号,包围着零个或多个名称/值对(或成员)。名称是一个字符串。每个名称后都有一个冒号,将名称与值分开。单个逗号将值与后面的名称分开。对象中的名称
唯一。

…其中应表示:

3.应该。这个词,或形容词“推荐”,意味着在特定情况下可能存在忽略特定项目的正当理由,但是在选择其他课程之前,必须理解并仔细权衡所有含义。

是的,基本上 可以 做到,这是 合法的
,但这也是一个坏主意。不同的JSON解码器可能会以不同的方式和/或以不希望的方式处理这种情况。查看规范对解析器的要求:

JSON解析器将JSON文本转换为另一种表示形式。JSON解析器 必须 接受所有符合JSON语法的文本。JSON解析器 可以
接受非JSON形式或扩展名。

一个实现 可以 对其接受的文本大小设置限制。一种实现 可以 对最大嵌套深度设置限制。一个实现 可以 对数字范围设置限制。一个实现
可以 对字符串的长度和字符内容设置限制。

…但实现不 具有 到三立处理这种情况。例如:

# Python 2.7
>>> import json
>>> json.JSONDecoder().decode('{"a": "b", "a": "c"}')
`{u'a': u'c'}`
# Chrome 32
> JSON.parse('{"a": "b", "a": "c"}')
Object {a: "c"}

…以及其他实现可能会合法地给您(以Python表示法):

  • {“ a”:“ b”}

  • [(“ a”,“ b”),(“ a”,“ c”)]

  • [(“ a”,[“ b”,“ c”])]

  • []

  • 42

  • “您的JSON不好,您应该感到难受”

…或者只是好的旧式鼻部守护程序。从字面上看,JSON解析器在这里所​​做的唯一非法的事情就是引发异常

您在生产代码中要做的最后一件事是依靠怪异的情况。因此,您要做的最后一件事是行使您的权利,以形成名义上合法但实际上无用的JSON。如果要执行此操作,则必须手动进行-
建立自己的抽象语法树,自己的解析器,自己的生成器,为任何可能想要使用您的数据的人生成器…



 类似资料:
  • 问题内容: 如何使用变量作为键访问对象。这是我的代码示例: 问题答案: 您可以访问数组之类的对象:

  • 我有一个静态结构的对象: 我想按键更新它的属性。例如,如果我收到 然后我想更新对象,并有: 我该怎么办?我试图创建一个新对象,类似这样: 我不知道如何从变量中设置键和值的名称

  • 问题内容: 我是Python的新手,并且正在使用JSON数据。我想通过向现有JSON对象添加一些键值来动态构建JSON对象。 我尝试了以下方法,但得到了: 问题答案: 您在将对象编码为JSON字符串 之前先 对其进行构建: JSON是 序列化 格式,文本数据 表示 结构。它本身不是那个结构。

  • 问题内容: 在python中,您可以按以下顺序生成带有键的JSON: 我在Go中找不到类似的选项。有什么想法可以在旅途中实现类似的行为吗? 问题答案: json包在编组时总是对密钥进行排序。特别: 地图按字典顺序对键进行排序 结构键按照结构中定义的顺序编组 该实现位于此处的ATM中: http://golang.org/src/pkg/encoding/json/encode.go?#L359

  • 目前,我正在生成表头和行,但我希望使行更具动态性。如何在不重复一次的情况下打印行的数据?我怎样才能像标题一样使用1语句呢?所以基本上我只需要调用{row},它应该生成该行包含的所有内容,而不必键入{row.school}等等。。。

  • 问题内容: 我之前从未使用过JSON,并且尝试使用以下javascript:http : //jqueryselectcombo.googlecode.com/files/jquery.selectCombo1.2.6.js 它需要以下格式的JSON输出: 您能否指导我举一个有关如何使用PHP生成上述JSON输出的示例? 问题答案: 最简单的方法可能是从所需的对的关联数组开始: 然后使用forea