swift里 怎么把字典或者数组转json字符串

如题所述

下载在这儿下载SwiftyJSON,或者直接在GitHub克隆它:gitclonehttps//githucom/lingoer/SwiftyJSON.git基础用法SwiftyJSON的使用十分的简单:典型的NSURLSessionTask抓取Twitter的API将产生dataFromNetwork:NSData!:你首先应该做的事情是初始化JSONValue:?1letjson=JSONValue(dataFromNetwork)JSONValue是一个枚举类型表示一个典型的JSON数据结构。你能使用subscripts检索不同的值从原始的JSONValue中,像这样:letuserName:JSONValue=json[0]["user"]["name"]注意userName仍然是一个JSONValue。那怎样得到一个字符串呢?你能用.string属性得到JSON数据表示的真正值。letuserNameString=userName.string!对每一种JSON类型,JSONValue都提供了一种属性检索它:varstring:String?varnumber:NSNumber?varbool:Bool?vararray:Array?varobject:Dictionary?注意每一种属性都是一个Optional值。这是因为JSON数据能包含任何它定义的有效类型。因此,建议的方式是用Optional绑定检索值:ifletname=userName.string{//Thiscouldavoidlotsofcrashescausedbytheunexpecteddatatypes}ifletname=userName.number{//AsthevalueoftheuserNameisNotanumber.Itwon'texecute.}.number属性产生一个NSNumber值,在Swift中这通常不是很有用。你能用.double或者.integer得到一个Double值或者一个Int值。ifletintValue=numberValue.integer{count+=intValue}地狱星星地狱星星翻译于4个月前0人顶顶翻译的不错哦!枚举(Enumeration)在Swift中JSONValue实际上是一个枚举:enumJSONValue{caseJNumber(NSNumber)caseJString(String)caseJBool(Bool)caseJNullcaseJArray(Array)caseJObject(Dictionary)caseJInvalid(NSError)}你可以使用一个switch子句去更有效地获取值:letjson=JSONValue(jsonObject)switchjson["user_id"]{case.JString(letstringValue):letid=stringValue.toInt()case.JNumber(letnumberValue):letid=numberValue.integerValuedefault:println("ooops!!!JSONDataisUnexpectedorBroken")下标(Subscripts)注意,在JSON中一个数组结构被包装成intoArray,它意味着数组里的每一个元素都是一个JSONValue。甚至你从JSONValue中取出一个数组,你仍然可以使用基本的属性去获取元素的值:ifletarray=json["key_of_array"].array{ifletstring=array[0].string{//Thearray[0]isstillaJSONValue!}}对象也是一样。因此,推荐的方式是访问每一个数组和对象时使用JSONValue的下标。ifletstring=json["key_of_array"][0].string{}实际上,你可以用下标访问一个JSONValue,还不用担心运行时错误导致的崩溃:?1letuserName=json[99999]["wrong_key"]如果你使用推荐的方式去取数据,它是安全的:ifletuserName=json[99999]["wrong_key"]["name"].string{//It'salwayssafe}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-06-24
+(NSString *)stringTOjson:(id)temps //把字典和数组转换成json字符串
{
NSData* jsonData =[NSJSONSerialization dataWithJSONObject:temps
options:NSJSONWritingPrettyPrinted error:nil];
NSString *strs=[[NSString alloc] initWithData:jsonData
encoding:NSUTF8StringEncoding];
return strs;
}

利用NSJSONSerialization序列化成NSData,再通过NSString 转成JSON字符串
func toJSONString(dict:NSDictionary!)->NSString{

var data = NSJSONSerialization.dataWithJSONObject(dict, options: NSJSONWritingOptions.PrettyPrinted, error: nil)
var strJson=NSString(data: data, encoding: NSUTF8StringEncoding)
return strJson

}本回答被提问者采纳
第2个回答  2018-07-27
自己解决了,和OC写法差不多;
利用NSJSONSerialization序列化成NSData,再通过NSString 转成JSON字符串
func toJSONString(dict:NSDictionary!)->NSString{
var data = NSJSONSerialization.dataWithJSONObject(dict, options: NSJSONWritingOptions.PrettyPrinted, error: nil)
var strJson=NSString(data: data, encoding: NSUTF8StringEncoding)
return strJson
}本回答被网友采纳
相似回答