代码之家  ›  专栏  ›  技术社区  ›  유하늘

如何过滤JSON数据解析器

  •  0
  • 유하늘  · 技术社区  · 8 年前

    JSON 回答 tranArr公司

    [{
    
    "total_amt" : -10000,
    "tran_type" : "C3",
    "pay_type" : "05",
    "tran_time" : "20180125 133122",
    "point_total" : 0
     },
    
     {
    
    "total_amt" : -1004,
    "tran_type" : "C5",
    "pay_type" : "05",
    "tran_time" : "20180124 163602",
    "point_total" : 0
    }]
    

    =====================

    我要筛选tran\u type=“C3”

    我该怎么办?

    "total_amt" : -10000,
    "tran_type" : "C3",
    "pay_type" : "05",
    "tran_time" : "20180125 133122",
    "point_total" : 0
    
    1 回复  |  直到 8 年前
        1
  •  0
  •   Mukesh    8 年前

    尝试以下操作:

    let string = "[{ \"total_amt\" : -10000,\"tran_type\" : \"C3\", \"pay_type\" : \"05\", \"tran_time\" : \"20180125 133122\", \"point_total\" : 0},{\"total_amt\" : -1004,\"tran_type\" : \"C5\", \"pay_type\" : \"05\", \"tran_time\" : \"20180124 163602\", \"point_total\" : 0 }]"
    
    // Convert string to Data
    let jsonData = string.data(using: .utf8)!
    
    do {
        // Serialize the json Data and cast it into Array of Dictionary
        let jsonObject = try JSONSerialization.jsonObject(with: jsonData, options: .allowFragments) as? [[String: Any]]
    
        // Apply filter on `tran_type`
        let tranArr = jsonObject?.filter({ (dictionary) -> Bool in
            dictionary["tran_type"] as? String == "C3"
        })
    
        print(tranArr)
    
    } catch {
        print(error)
    }
    

    筛选结果将位于 tranArr 对象