Java 使用jackson json将特定位置的属性添加到json字符串中

Java 使用jackson json将特定位置的属性添加到json字符串中,java,json,jackson,Java,Json,Jackson,我知道如何使用jackson withObjectNode.put()添加属性,但是有没有办法在特定位置插入属性? 例如,如果我有这个JsonNode: { "property1":"val1", "property2":"val2", "property3":"val3" } 我想要的是: { "property1":"val1", "property4":"val4", "property2":"val2", "property3":

我知道如何使用jackson with
ObjectNode.put()
添加属性,但是有没有办法在特定位置插入属性? 例如,如果我有这个JsonNode:

{
    "property1":"val1",
    "property2":"val2",
    "property3":"val3"
}
我想要的是:

{
    "property1":"val1",
    "property4":"val4",
    "property2":"val2",
    "property3":"val3"
}

使用Jackson如何实现这一点?

JSON规范不要求对对象进行排序(它们可能取决于实现,也可能不取决于实现),因此您不应该依赖它。但是,数组是显式排序的:

6个对象 对象结构表示为围绕零个或多个名称/值对的一对花括号标记。A. 名称是一个字符串。每个名称后面都有一个冒号标记, 将名称与值分开。单个逗号标记 将值与下列名称分开

7阵列 阵列结构是一对方括号 围绕零个或多个值的标记。这些值是 用逗号分隔。这些值的顺序很重要


(from)

使用
对象映射器
,或者使用
@JsonPropertyOrder(字母=true)
或者明确指定的顺序


对象属性顺序应该无关紧要。你为什么在意呢?我正在解析一个json文件,我想在特定位置添加一个属性,然后写回。这可能吗?你为什么关心具体的“位置?”这有什么关系?文件是用于配置的,而且格式很好,我不想把它弄得乱七八糟。它是一个巨大的节点还是可以复制它?哦,好吧,现在我发现属性的顺序其实并不重要。我试图做的是读取json格式的文件,在特定位置添加一些属性,写回并保存文件。该文件格式良好,用于配置,我不想把它弄得乱七八糟,所以我想整理属性。该文件大约有37 MB,复制它应该没问题。我只是在想,既然Jackson在内部使用了
LinkedHasMap
,那么每次你想插入到它的其他地方而不是最后,你都可以重新填充整个对象。但是,37MB并不是很小,而且效率很低。顺便说一下,它可能会在下一版本的Jackson上停止工作,或者使用另一个JSON库。所有这些都表明我不推荐它。也许JSON不是您想要的格式,或者您需要数组而不是objectsOh很好,我想
ObjectMapper
是我想要的,我会试试看,谢谢!这很好,但假设他的配置保存在一个类中,情况可能并非如此,例如,它可能只是数据。在这种情况下,他将不得不编写一个100%的样板类,这可能是可以接受的,但可以说不是greatHi Matt,是否可以在不序列化的情况下处理它?要明确的是,我要做的是读取一个json文件,插入一个属性,然后写回该文件。你说的“没有序列化”是什么意思?将文件写入json就是序列化。嗯。。。好的,根据我的理解,如果我想写回,我需要创建类来处理数据。这是真的吗?例如,如果我有一个car对象,我需要一个car类来处理数据,然后修改数据并写回文件。我可以在没有这些类的情况下修改json文件吗?