You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java REST API GET请求中JSONObject指定message字段排序问题

解决Java JSONObject字段顺序问题,让message字段排在最后

哦,这个问题我太熟了!之前也踩过同样的坑——默认的JSONObject(尤其是org.json包里的那个)底层是用HashMap实现的,而HashMap是无序的,完全不保证你插入键值对的顺序会和输出的顺序一致。所以不管你把put("message", "success")放在代码的哪个位置,最终JSON里的字段顺序都是由键的哈希值决定的,这就是为什么它总跑到中间去。

解决办法:用LinkedHashMap初始化JSONObject

LinkedHashMap会严格保留插入顺序,只要用它来初始化你的JSONObject,之后按你想要的顺序put字段,最终输出的JSON就会遵循这个顺序。

完整代码示例:

import org.json.JSONObject;
import java.util.LinkedHashMap;

public class RestResponseExample {
    public static void main(String[] args) {
        // 用LinkedHashMap初始化JSONObject,保证插入顺序
        JSONObject reply = new JSONObject(new LinkedHashMap<>());
        
        // 先添加所有其他字段
        JSONObject userInfo = new JSONObject();
        userInfo.put("id", 123);
        userInfo.put("name", "Alice");
        reply.put("user", userInfo);
        
        reply.put("total", 5);
        reply.put("items", new String[]{"item1", "item2"});
        
        // 最后添加message字段,它就会排在JSON的最后
        reply.put("message", "success");
        
        // 输出看看结果
        System.out.println(reply.toString(4)); // 带缩进的格式化输出
    }
}

输出结果示例:

{
    "user": {
        "id": 123,
        "name": "Alice"
    },
    "total": 5,
    "items": [
        "item1",
        "item2"
    ],
    "message": "success"
}

这样就能完美实现你想要的效果,让message字段固定在所有其他字段的后面啦。

内容的提问来源于stack exchange,提问作者khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:06:28