I am trying to pass parameter to api using JSON.
class Sample
{ ...
String token;
...
void method()
{ ...
JSONObject params = new JSONObject();
params.put(KEY_TOKEN,token);
params.put(KEY_DATE,date);
Log.e("params ",params+"");
... }
I get the value of params as {"date":"2017-06-19"}
but token is seen nowhere.
I have not initialized token and its value is null as its an instance variable. So is it something that uninitialized value are not included?
Right there in the documentation, in the first paragraph:
Values may not be
null
,NaN
s, infinities, or of any type not listed here.
So yes, it is "...something that null
values are not included..." (edit: that was a quote from your original question; your updated question changes it to "uninitialized values" but the default value of an object reference is null
, so...)
It's a "feature" of that class, though; JSON itself understands null
just fine. Further down in the documentation it says you use a "sentinal value," NULL
, to represent null
. Which seems...odd. There's a note about it:
Warning: this class represents
null
in two incompatible ways: the standard Javanull
reference, and the sentinel valueNULL
. In particular, callingput(name, null)
removes the named entry from the object butput(name, JSONObject.NULL)
stores an entry whose value isJSONObject.NULL
.
So:
params.put(KEY_TOKEN, token == null ? JSONObject.NULL : token);