JSON中所有对象是否必须包含相同信息?可否直接删除值为null的字段?
JSON规范相关问题解答
1. JSON规范是否要求所有对象必须包含完全一致的字段集合?
JSON本身的官方规范没有对同场景下的对象字段一致性做强制要求。作为通用轻量级数据交换格式,JSON的结构完全自由,字段的有无、类型差异都不受JSON语法规则限制,仅由上层业务侧定义的schema规则决定。
2. 代表无意义的null值字段是否可以删除?
这完全取决于你的业务逻辑对两种状态的定义:
- 若你的业务逻辑中,「字段不存在」和「字段值为null」语义完全等价,比如你当前的场景下两种情况都代表「无法从对应渠道购买」,那可以直接删除所有值为null的字段,还能降低数据传输、存储的体积。
比如你给出的示例可以简化为:
葡萄数据:
远古水果数据:{ "name": "Grapes", "purchase_price": [ {"Pierres's": 60}, {"JojaMart": 75} ], "sell_price": [ {"Base": 80}, {"Silver": 100}, {"Gold": 120}, {"Iridium": 160} ], "is_multi_harvest": false }{ "name": "Ancient Fruit", "purchase_price": [ {"Traveling Cart": 1000} ], "sell_price": [ {"Base": 550}, {"Silver": 684}, {"Gold": 825}, {"Iridium": 1100} ], "is_multi_harvest": false } - 若你的业务逻辑需要区分两种语义,比如「字段不存在=该渠道不属于合法销售渠道列表」、「字段存在值为null=该渠道属于合法销售渠道,但当前商品不可从该渠道购买」,那必须保留值为null的字段,避免程序获取合法渠道列表时出现信息缺失。
额外优化建议
你当前purchase_price采用数组嵌套单键对象的结构,遍历查询效率较低,建议调整为单个对象存储,结构更简洁:
"purchase_price": { "Pierres's": 60, "JojaMart": 75 }
内容的提问来源于stack exchange,提问作者Zachary Turner
相关产品推荐
相关产品推荐

