V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
headin
V2EX  ›  问与答

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

  •  1
     
  •   headin · 2019-02-02 21:23:26 +08:00 · 1965 次点击
    这是一个创建于 2155 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    https://github.com/DaveGamble/cJSON/blob/c69134d01746dcf551dd7724b4edb12f922eb0d1/cJSON.h#L103-L123
    geelaw
        8
    geelaw  
       2019-02-02 21:58:23 +08:00
    @ipwx #6 问题在于 1 instanceof Object 是 false。

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

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

    算是“同一类型”吗?

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

    对于 key 是任意的情形,这样的 object 叫做字典
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2823 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 07:11 · PVG 15:11 · LAX 23:11 · JFK 02:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.