請問Delphi XE3有內建的方法可以將JSON的資料排序的嗎? |
答題得分者是:kuraki5336
|
cgsn
一般會員 發表:7 回覆:3 積分:2 註冊:2004-02-16 發送簡訊給我 |
|
kuraki5336
初階會員 發表:13 回覆:35 積分:34 註冊:2010-06-09 發送簡訊給我 |
---------------------------------------------------------------------------------
var mDict : TObjectDictionary< Integer, String >; marr : TArray< Integer >; jSonData:ISuperObject; JsonArray:ISuperObject; begin //本身有來源並且來源有序號 所以應該不需要用到這段 mDict.Add(Key, Value); mDict.Add(Key, Value); mDict.Add(Key, Value); mDict.Add(Key, Value); marr:= mDict.Keys.ToArray TArray.Sort(marr); for i in arr do begin JsonData := SO; JsonData.s[inttostr(i)] := mDict.Items[i]; JsonArray.AsArray.Add(JsonData); end; --------------------------------------------------------------------------------- 如果知道來源的話應該就直接 JsonDataRequest := SO(來源); JsonDataReturn := SO; for 0 to JsonDataRequest .Count -1 then JsonDataReturn.s[inttostr(i)] := JsonDataRequest[inttostr(i)].Astring; Resutl := JsonDataReturn.tostring --------------------------------------------------------------------------------- ===================引 用 cgsn 文 章=================== 請問Delphi XE3有內建的方法可以將JSON的資料排序的嗎? 例如: { "1":"Mark" "3":"Mary" "4":"HULK" "2":"SAM" } 我想要排序後變成 { "1":"Mark" "2":"SAM" "3":"Mary" "4":"HULK" } 謝謝!!
編輯記錄
kuraki5336 重新編輯於 2018-06-29 23:55:10, 註解 無‧
kuraki5336 重新編輯於 2018-06-29 23:57:02, 註解 無‧ kuraki5336 重新編輯於 2018-06-29 23:58:14, 註解 無‧ |
cgsn
一般會員 發表:7 回覆:3 積分:2 註冊:2004-02-16 發送簡訊給我 |
問題解決了,感謝kuraki5336,附上程式碼,不過有遇到一個奇怪的問題,
如果先取得oDict.ExtractPair(tArr[i]).Key再取oDict.ExtractPair(tArr[i]).Value之後oDict.ExtractPair(tArr[i]).Value就會變空白, 反過來就沒事,有誰知道這是什麼問題嗎? [code delphi] Var oDict : TObjectDictionary< String, String >; tArr : TArray< String >; i:integer; sValue,sKey:String; jo:TJSONObject; jp:TJSONPair; begin sValue := ''; sKey := ''; try oDict := TObjectDictionary< String, String>.Create; oDict.Add('a','Mark'); oDict.Add('c','Mary'); oDict.Add('z','Eric'); oDict.Add('d','Hulk'); oDict.Add('b','SAM'); tArr := oDict.Keys.ToArray; TArray.Sort(tArr); jo := TJSONObject.Create; for i := LOW(tArr) to High(tArr) do begin sValue := oDict.ExtractPair(tArr[i]).Value; sKey := oDict.ExtractPair(tArr[i]).Key; jp := TJSONPair.Create(sKey,sValue); jo.AddPair(jp); end; Memo1.Lines.Clear; Memo1.Lines.Add(jo.ToString); finally jo.Free; oDict.Free; end; end; [/code]
編輯記錄
cgsn 重新編輯於 2018-07-05 10:42:44, 註解 無‧
|
kuraki5336
初階會員 發表:13 回覆:35 積分:34 註冊:2010-06-09 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |