DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: coooyang
今日帖子: 31
在线用户: 8
导航: 论坛 -> 移动应用开发 斑竹:flyers,iamdream  
作者:
男 ksrsoft (cb168) ★☆☆☆☆ -
普通会员
2024/3/17 20:10:29
标题:
请问jsonobject排序怎么实现,百度搜索AI的回答编译不通过 浏览:300
加入我的收藏
楼主: uses
  System.JSON, System.Generics.Collections, System.JSON.Builders;
 
var
  JSONObject: TJSONObject;
  JSONPairList: TList<TJSONPair>;
  SortedKeys: TDictionary<string, TJSONValue>;
  JSONBuilder: TJSONBuilder;
  Key: string;
  Pair: TJSONPair;
  JSONStr: string;
begin
  // 示例JSONObject
  JSONObject := TJSONObject.ParseJSONValue('{"c":3,"a":1,"b":2}') as TJSONObject;
  try
    // 创建一个字典来存储键值对
    SortedKeys := TDictionary<string, TJSONValue>.Create;
    try
      // 将JSONObject中的键值对添加到字典中
      for Pair in JSONObject do
        SortedKeys.Add(Pair.JsonString.Value, JSONObject.GetValue(Pair.JsonString.Value));
 
      // 清空JSONObject
      JSONObject.Clear;
 
      // 对字典中的键进行排序
      JSONPairList := TList<TJSONPair>.Create;
      try
        for Key in SortedKeys.Keys do
          JSONPairList.Add(TJSONPair.Create(Key, SortedKeys[Key]));
 
        // 使用JSONBuilder来构建排序后的JSON字符串
        JSONBuilder := TJSONBuilder.Create(TJSONFormatter.Create(TStringBuilder.Create));
        try
          for Pair in JSONPairList do
          JSONBuilder.Add(Pair.JsonString.Value, Pair.JsonValue);
          JSONStr := JSONBuilder.ToString;
        finally
          JSONBuilder.Free;
        end;
      finally
        JSONPairList.Free;
      end;
    finally
      SortedKeys.Free;
    end;
 
    // 输出排序后的JSON字符串
    WriteLn(JSONStr);
  finally
    JSONObject.Free;
  end;
end;
----------------------------------------------
-
作者:
男 roadrunner (roadrunner) ★☆☆☆☆ -
盒子活跃会员
2024/3/17 21:03:41
1楼: function SortedObject(A:TJsonObject):TJsonObject
var s : tstringlist;
begin
  s := tstringlist.create;
  try
    s.sorted := true;
    for var i := 0 to A.count-1 do s.addobject(A.pairs[i].JsonString.Value,A.pairs[i].JsonValue);
    Result := TJsonObject.Create;
    for var i := 0 to s.count-1 do Result.AddPair(s[i],TJsonValue(s,objects[i]));
  finally
    s.free;
  end;
end;
----------------------------------------------
-
作者:
男 ksrsoft (cb168) ★☆☆☆☆ -
普通会员
2024/3/18 10:25:06
2楼: 谢谢
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行140.625毫秒 RSS