我正在使用Android应用程序连接到Web服务以存储CONTACT详细信息。 JSON请求数据基本上是5个CONTACT细节(名称和电话号码)以及accessToken(用于验证用户)。
我按顺序放置JSON对象的键值对,就像我想要生成它一样,但是当我在控制台上打印数据时,序列不会被维护。
我希望如何生成JSON
{
"contact_1": {
"name": "Person 1",
"contact_num": "001"
},
"contact_2": {
"name": "Person 2",
"contact_num": "002"
},
"contact_3": {
"name": "Person 3",
"contact_num": "003"
},
"contact_4": {
"name": "Person 4",
"contact_num": "004"
},
"contact_5": {
"name": "Person 5",
"contact_num": "005"
},
"accessToken": "9n5h4jbtXFDl4"
}
JSON如何实际存在
{
"contact_4": {
"contact_num": "004",
"name": "Person 4"
},
"contact_3": {
"contact_num": "003",
"name": "Person 3"
},
"contact_5": {
"contact_num": "005",
"name": "Person 5"
},
"accessToken": "84j48HCgtZ8b8",
"contact_2": {
"contact_num": "002",
"name": "Person 2"
},
"contact_1": {
"contact_num": "001",
"name": "Person 1"
}
}
用于生成JSON的代码
JSONObject jsonObjectInner = new JSONObject();
JSONObject jsonObjectOuter = new JSONObject();
try
{
jsonObjectInner.put("name", "Person 1");
jsonObjectInner.put("contact_num", "001");
jsonObjectOuter.put("contact_1", jsonObjectInner);
jsonObjectInner = new JSONObject();
jsonObjectInner.put("name", "Person 2");
jsonObjectInner.put("contact_num", "002");
jsonObjectOuter.put("contact_2", jsonObjectInner);
jsonObjectInner = new JSONObject();
jsonObjectInner.put("name", "Person 3");
jsonObjectInner.put("contact_num", "003");
jsonObjectOuter.put("contact_3", jsonObjectInner);
jsonObjectInner = new JSONObject();
jsonObjectInner.put("name", "Person 4");
jsonObjectInner.put("contact_num", "004");
jsonObjectOuter.put("contact_4", jsonObjectInner);
jsonObjectInner = new JSONObject();
jsonObjectInner.put("name", "Person 5");
jsonObjectInner.put("contact_num", "005");
jsonObjectOuter.put("contact_5", jsonObjectInner);
accessToken = SettingConnector.readString(context, SettingConnector.ACCESS_TOKEN, null);
jsonObjectOuter.put("accessToken", accessToken);
commonAPI.SendRequest(value, "http://sandbox.example.com/setEmergencyNumbers");
有什么方法可以维持序列吗?
答案 0 :(得分:2)
根据定义:
对象是一组无序的名称/值对。
因此JSONObject
不需要,不维持订单。
好的一面 - 如果你使用JSON库,你也不需要订购。
答案 1 :(得分:0)
答案 2 :(得分:0)
正如另一个答案所说,你不应该依赖JSONObject中的顺序。但是如果您因某种原因需要订购数据,可以使用JSONArray类。
答案 3 :(得分:0)
JSON本质上是一个无序的键/值对列表,如本答案中所述: [JSONObject : Why JSONObject changing the order of attributes
但是没关系,你可以通过
访问它的成员varName.contact_1.name
我使用了varName,因为将这个JSON分配给变量会更容易使用它。
如果你想像处理数组那样处理每个元素,那么通过删除你的outter {}并用[]
替换它们来创建一个JSON数组答案 4 :(得分:0)
您可以将这些联系人存储在json数组中。这将维持秩序。