我试图使用JSON对象构造JSON字符串
我希望JSON字符串以这种方式构造
{
"Level": "3",
"Name": "testLogger",
"IPADDRESS": "testMachiene",
"Message": "hiiiiiiiiii",
"TimeStamp": "test12345678"
}
这是我的简单程序
package com;
import org.json.JSONObject;
public class Teste {
public static void main(String args[]) throws Exception {
int loglevel = 3;
String loggerName = "testLogger";
String machieneName = "testMachiene";
String timeStamp = "test12345678";
String message = "hiiiiiiiiii";
JSONObject obj = new JSONObject();
obj.put("TimeStamp", message);
obj.put("Message", timeStamp);
obj.put("IPADDRESS", machieneName);
obj.put("Name", loggerName);
obj.put("Level", loglevel);
System.out.println(obj.toString());
}
}
它是这样构建的
{
"Name": "testLogger",
"TimeStamp": "hiiiiiiiiii",
"Message": "test12345678",
"Level": 3,
"IPADDRESS": "testMachiene"
}
我的问题是为什么它改变了属性的顺序
我可以有我想要的顺序吗?
该 JSON 对象实际上是键到值的映射。它没有内在的秩序。如果你想要订购一些东西,你可能想看看JSONArray(但那不会有钥匙 -
正如其他人提到的,JSONObject不应该保持同样的顺序。
但是,如果您确实希望拥有有序项,可以自己实现它,并使用LinkedHashMap作为类的项容器。
看到这里的答案:JSON顺序混了
您不能也不应该依赖于 JSON 对象中元素的顺序。
来自http://www.json.org/:的JSON规范
"对象是一组无序的名称/值对"
因此,JSON 库可以自由地重新排列元素的顺序,只要它们认为合适。这不是一个错误。
问题内容: 我会通过大包装喜欢迭代与GSON。我的最终目标是获取内部对象中所有现有的三位数整数,但是一旦我可以遍历外部对象的属性,就没有问题。 有什么整洁的方法吗? 问题答案: 您可以用来遍历最外层的成员。
问题内容: 我正在使用JSONObject来删除JSON字符串中不需要的certin属性: 它可以正常工作,但是问题是JSONObject是“名称/值对的无序集合”,我想保持String在通过JSONObject操作之前的原始顺序。 任何想法如何做到这一点? 问题答案: 你不能 这就是为什么我们称其 为名称/值对的无序集合 。 我不确定为什么需要这样做。但是,如果要订购,则必须使用json数组。
我有以下JSONObject: 我对使用JSON非常陌生。我需要的是JSON对象数组,每个键都是Question5、Question4等,这些值就是答案。你能帮忙吗?
我想向jsonObject添加一个新字段,这个新字段的名称将基于另一个字段的值。明确地说,这是我想要实现的一个例子。 我想为每个json对象添加一个新的字段,它将以字段“stat”的值作为名称。 我尝试使用JsonPath库执行以下操作,但对我来说,这是一个难看的解决方案,因为我将解析json三次,并进行一些手动替换。 这是得到的结果 有没有更好的方法来达到这个结果呢?我试着用gson来做,但它不
在使用一个库的时候碰到了一个很奇怪的问题,有个class实例化生成的对象,假设为A 对A的属性进行修改 打印A发现,其中的a属性并没有变,但是直接打印A.a是改变了的,请问这种情况大概会是什么原因呢,是有什么知识盲区吗,目前知道a属性是不可删除的属性,但是一般对象设置configurable=false也不会出现这种情况,如果不允许修改的话应该也会报错。。 (PS:A只是为了表述简化的例子,并不是
我有一个json blob,如下所示: 这只是一个在这里发布的例子。在这个例子中,我们看到它提供了一个学校每年发生的所有事件的列表,该列表是一个累积列表,即上一年的事件也会被追加。我们知道的是,每年的活动都将以“会议开始”活动开始。我想通过这件事,以最新的一系列事件结束。请忽略事件名称中的时间戳或年份,它们只是示例,我在现实世界中没有此类信息。我需要的最终结果是: 所以,我想保留从“会话开始”事件