headin
V2EX  ›  问与答

JSON 数组存了多种数据类型的话,用其它语言操作时会不会造成问题?

  •  1
     
  •   headin · Feb 2, 2019 · 3018 views
    This topic created in 2843 days ago, the information mentioned may be changed or developed.

    类似这样的数组 ["hello",334]

    12 replies  •  2019-02-03 15:57:21 +08:00
    misaka19000
    misaka19000
    Feb 2, 2019 via Android
    1
    这不是一个 json 数组
    bumz
    bumz
    Feb 2, 2019
    2
    @headin #0 数组本来就应该放同一类型的东西,放不同东西的逻辑何在呢?
    @misaka19000 #1 这个数组是符合 https://www.json.org/ 的定义的
    momocraft
    momocraft
    Feb 2, 2019
    3
    允許一數組元素不同類型的語言就沒問題
    不允許的也有方法迴避問題
    V2exUser
    V2exUser
    Feb 2, 2019 via Android
    4
    @misaka19000 这是一个数组啊,类型是字符串。
    Cbdy
    Cbdy
    Feb 2, 2019 via Android
    5
    不会
    ipwx
    ipwx
    Feb 2, 2019
    6
    @bumz 这是一个数组,类型是 Object。有问题吗?
    rayhy
    rayhy
    Feb 2, 2019
    7
    各种语言里成熟的 json 库就不会。举个例子,C 语言。 ["hello",334] 是包含类别 tag 的 struct 的数组,比如

    https://github.com/DaveGamble/cJSON/blob/c69134d01746dcf551dd7724b4edb12f922eb0d1/cJSON.h#L103-L123
    geelaw
    geelaw
    Feb 2, 2019
    8
    @ipwx #6 问题在于 1 instanceof Object 是 false。

    @bumz #2 JavaScript array 是不存在“数组里元素类型”的概念的,而且

    [ { hasB: false }, { hasB: true, b: 1 }]

    算是“同一类型”吗?

    #0 不会,因为可以操作 JavaScript object 的语言都已经有对应 JavaScript array 的东西了。
    GeekCourse
    GeekCourse
    Feb 2, 2019 via Android
    9
    php 处理没有任何问题
    headin
    headin
    OP
    Feb 2, 2019
    10
    感谢楼上各位。
    RqPS6rhmP3Nyn3Tm
    RqPS6rhmP3Nyn3Tm
    Feb 3, 2019 via iPhone
    11
    用一个数字字符串用做 key 可能会出问题
    bumz
    bumz
    Feb 3, 2019
    12
    @geelaw #8 javascript 中不存在数组里元素类型的概念,但是在应用中,不同的 object 也必须要具有一定的格式才有意义,这种「格式」对应的就是静态类型语言中类型的概念

    对于 key 是任意的情形,这样的 object 叫做字典
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1191 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 17:20 · PVG 01:20 · LAX 09:20 · JFK 12:20
    ♥ Do have faith in what you're doing.