headin
V2EX  ›  问与答

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

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

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

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

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

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

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

    算是“同一类型”吗?

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

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