2014-06-06 139 views
-2

键使用此代码来获取和分析:解析JSON没有SWIFT

func getJSON(urlToRequest: String) -> NSData 
{ 
    return NSData(contentsOfURL: NSURL(string: urlToRequest)) 
} 
func parseJSON(inputData: NSData) -> NSDictionary 
{ 
    var error: NSError? 
    var boardsDictionary: NSDictionary = NSJSONSerialization.JSONObjectWithData(inputData, options: NSJSONReadingOptions.MutableContainers, error: &error) as NSDictionary 
    return boardsDictionary 
} 
    var parsedJSON = parseJSON(getJSON("url")) 

println(parsedJSON)结果:

{ 
message = ""; 
result =  (
      { 
     BC = B; 
     BCL = Bbb; 
     C = "2014-02-13T00:00:00"; 
     IA = 1; 
     MC = L; 
     MCL = Lll; 
     MN = "B-L"; 
     MS = "165"; 
    }, 
      { 
     BC = B; 
     BCL = Bbb; 
     C = "2014-02-13T00:00:00"; 
     IA = 1; 
     MC = E; 
     MCL = Eee; 
     MN = "B-E"; 
     MS = "654"; 
    }, 
      { 
     BC = B; 
     BCL = Bbb; 
     C = "2014-02-13T00:00:00"; 
     IA = 1; 
     MC = D; 
     MCL = Ddd; 
     MN = "B-D"; 
     MS = "864"; 
    }, 
); 
success = 1; 
} 

println(parsedJSON["result"])结果:

{ 
     BC = B; 
     BCL = Bbb; 
     C = "2014-02-13T00:00:00"; 
     IA = 1; 
     MC = L; 
     MCL = Lll; 
     MN = "B-L"; 
     MS = "165"; 
    }, 
      { 
     BC = B; 
     BCL = Bbb; 
     C = "2014-02-13T00:00:00"; 
     IA = 1; 
     MC = E; 
     MCL = Eee; 
     MN = "B-E"; 
     MS = "654"; 
    }, 
      { 
     BC = B; 
     BCL = Bbb; 
     C = "2014-02-13T00:00:00"; 
     IA = 1; 
     MC = D; 
     MCL = Ddd; 
     MN = "B-D"; 
     MS = "864"; 
    }, 

println(parsedJSONlS["result"]!["MCL"])给 “无”

如何从每组中提取MCL值?我可以通过索引访问值吗?

+0

转到json.org所和学习JSON语法 - 只需要5-10分钟。 “结果”是一个数组。 –

回答

0

它看起来像parsedJSONlS [“结果”]会给你一个字典数组。你可以这样做:

var array = parsedJSONlS["result"] 
array[0]["MCL"] 
// or 
var dictionary = array[0] as Dictionary 
println(dictionary["MCL"]) 

这当然只是给你的结构的想法,你必须创建该阵列一个循环,并抓住所有的字典,并提取它们的值。

0

您应该在这里考虑选项:从字典中检索值可能会返回nil。因此,采取从你的字典每MCL值,并把它们的元组数组的索引:

func retrieveMCL(index : Int, value : Dictionary<String, String>) -> (Int,String)? 
    { 
     switch value["MCL"] { 
     case .Some(let mclValue): return (index, mclValue) 
     default: return nil 
     } 
    } 

    // This mimics your results from JSON 
    let results = ["result":[["MCL":"Eee"],["MCL":"Ddd"]]] 
    var mclArray : Array<(Int,String)> = [] 

    if let resultsArray = results["result"] 
    { 
     for (index,value) in enumerate(resultsArray){ 
      if let mclTupple = retrieveMCL(index, value) { 
       mclArray += mclTupple 
      } 
     } 
    }