gpt4 book ai didi

java - 排列 JSON 对象中的元素?

转载 作者:行者123 更新时间:2023-12-01 19:01:25 26 4
gpt4 key购买 nike

我正在用 Java 编写一个程序,我需要在其中编辑 JSON 输入,然后通过 POST 将其重新提交到不同的系统。在我的代码中,我使用具有键:值对的 HashMap,其中我将 JSONArray 更新为新的视频类型。该代码似乎工作正常,但我的代码输出不同的顺序,我不确定为什么。

当我使用 Java 代码处理 JSON 代码时,输​​出如下所示:

    {
"TransformType": {
"encodeOptions": [
{
"types": [
"MPEG"
],
"title": "Convert to MPEG"
}
],
"processType": "encode"
}
}

系统期望的输出如下所示:

{
"TransformType": {
"processType": "encode",
"encodeOptions": [
{
"types": [
"MPEG"
],
"title": "Convert to MPEG"
}
]
}
}

我的代码非常简单:

HashMap<String,String> newTypesMap = new HashMap<String,String>();


if (TransformTypeObj.has("encodeOptions")) {

JSONArray encodingOptionsArr = TransformTypeObj.getJSONArray("encodeOptions");

for( int i = 0; i < encodingOptionsArr.length(); i++ ) {

JSONObject encodeOptObj = encodeOptionsArray.getJSONObject(i);
JSONArray typesArr = encodeOptObj.getJSONArray("types");

for (int h = 0; h < typesArr.length(); h++) {
String oldtype = typesArr.getString(h).toString();
String newType = newTypesMap.get(oldtype);
typesArr.put(h, newType);
}
}
}

我无法编辑或查看这个第三方系统,但显然顺序很重要。我将 Java 输出编辑为“正确”格式并进行了手动发布,系统接受了它。如果我尝试使用我的 java 代码输出,我会收到一条错误消息:

Java.lang.RuntimeException: com.jacksonmedia.data.api.marshalling.MarshallingException: array element type mismatch

我认为这与对象的顺序有关。如何使“processType”JSONString 成为 TransformType 对象中的第一个元素?

最佳答案

使用 LinkedHashMap 代替 HashMap,它保留插入顺序。

关于java - 排列 JSON 对象中的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12148107/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com