Ios 如何按字符串日期排序JSON?
我有一个从JSON中提取数据的应用程序。JSON的顺序很重要,因为应用程序按照JSON的顺序显示数据 我已经创建了一个单独的应用程序来创建JSON对象,将其添加到JSON的其余部分并上传。问题是它会将其添加到JSON文件的顶部。我想在按日期值上传JSON之前对其重新排序 我的JSON格式如下:Ios 如何按字符串日期排序JSON?,ios,json,swift,Ios,Json,Swift,我有一个从JSON中提取数据的应用程序。JSON的顺序很重要,因为应用程序按照JSON的顺序显示数据 我已经创建了一个单独的应用程序来创建JSON对象,将其添加到JSON的其余部分并上传。问题是它会将其添加到JSON文件的顶部。我想在按日期值上传JSON之前对其重新排序 我的JSON格式如下: { "articles": [ { "title":"Title 3", "url":
{
"articles":
[
{
"title":"Title 3",
"url":"URL 3",
"date":"04/01/17"
},
{
"title":"Title 2",
"url":"URL 2",
"date":"03/01/17"
},
{
"title":"Title 1",
"url":"URL 1",
"date":"02/01/17"
},
]
}
日期是dd/MM/yy格式的字符串。如果我按顺序添加文章,那么就没有问题了,因为最新的文章总是会添加到顶部,但是我有时会添加前几天的文章,我想将其插入前一个位置
有没有办法在通过日期值上传JSON之前对其进行排序?因为它已经是数组,只需减去它,转换为
date
,然后比较它们,非常简单:
let articleArray: [[String:String]] = dict["articles"]!
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd/MM/yy"
dict["articles"] = articleArray.sorted { (first, second) -> Bool in
return dateFormatter.date(from: first["date"]!)! < dateFormatter.date(from: second["date"]!)!
}
let articleArray:[[String:String]]=dict[“articles”]!
让dateFormatter=dateFormatter()
dateFormatter.dateFormat=“dd/MM/yy”
dict[“articles”]=articleArray.sorted{(第一,第二)->Bool-in
返回dateFormatter.date(起始日期:第一个[“日期”!)!
SwiftyJSON:
if let articleArray = json["articles"].array {
let sorted = articleArray.sorted(by: { (first, second) -> Bool in
return dateFormatter.date(from: first["date"].stringValue)! < dateFormatter.date(from: second["date"].stringValue)!
})
}
如果让articleArray=json[“articles”].array{
让sorted=articleArray.sorted(按:{(第一,第二)->Bool-in
返回dateFormatter.date(从:第一个[“日期”].stringValue)!
尽管您的JSON值可能是按照您输入的顺序显示的,但您不应该依赖于此,因为字典是无序的。我建议在JSON文章密钥中使用一个数组,然后按日期对该数组进行排序。这看起来很棒,这正是我想要做的。不过,我在获取articleArray时遇到了一些问题。我使用的是SwiftyJSON,所以我的json是json格式的,我不知道如何将其转换为数组或dict。你知道怎么做吗?我想我已经对它进行了排序,我已经添加了我的答案,以防它对任何人都有帮助。@Ghertysh用SwiftyJSON更新,你可以使用它的函数更容易地减去值,你不需要用它来转换类型,将dateFormatter
移出该块,这样它就不需要多次重新创建。感谢您的更新!这绝对是正确的方法,我将删除我的答案。刚刚意识到,这个月的日期格式应该是:“dd/MM/yy”