我正在尝试使用JSON将参数传递给api。
class Sample { ... String token; ... void method() { ... JSONObject params = new JSONObject(); params.put(KEY_TOKEN,token); params.put(KEY_DATE,date); Log.e("params ",params+""); ... }
我得到了params的价值,{"date":"2017-06-19"}但是令牌却无处可见。我尚未初始化令牌,并且其值为null作为其实例变量。难道不包括未初始化的值吗?
{"date":"2017-06-19"}
在文档的第一段中:
值可能不是null,NaNs,无穷大,也不能是此处未列出的任何类型。
null
NaN
所以是的,它是 “ …null不包含值的东西…” _ (编辑:这是您原始问题的引号;您更新后的问题将其更改为“未初始化的值”,但是对象引用的默认值为null,所以…)_
但是,这是该类的“功能”。JSON本身null就很好理解。在文档的更下方,它说您使用“信度值” NULL来表示null。似乎…很奇怪。有一个关于它的注释:
NULL
警告 :此类null以两种不兼容的方式表示:标准Java null引用和sentinel值NULL。特别是,调用put(name, null)会从对象中删除已命名的条目,但会put(name, JSONObject.NULL)存储值为的条目JSONObject.NULL。
put(name, null)
put(name, JSONObject.NULL)
JSONObject.NULL
所以:
params.put(KEY_TOKEN, token == null ? JSONObject.NULL : token);