swift里 怎么把字典或者数组转json字符串 Swift里能不能把string转成字典或数组.就像解析js...

swift\u91cc \u600e\u4e48\u628a\u5b57\u5178\u6216\u8005\u6570\u7ec4\u8f6cjson\u5b57\u7b26\u4e32

\u65b9\u6cd5\u597d\u4e0b\uff1a
+(NSString *)stringTOjson:(id)temps //\u628a\u5b57\u5178\u548c\u6570\u7ec4\u8f6c\u6362\u6210json\u5b57\u7b26\u4e32
{
NSData* jsonData =[NSJSONSerialization dataWithJSONObject:temps
options:NSJSONWritingPrettyPrinted error:nil];
NSString *strs=[[NSString alloc] initWithData:jsonData
encoding:NSUTF8StringEncoding];
return strs;
}

\u5229\u7528NSJSONSerialization\u5e8f\u5217\u5316\u6210NSData,\u518d\u901a\u8fc7NSString \u8f6c\u6210JSON\u5b57\u7b26\u4e32
func toJSONString(dict:NSDictionary!)->NSString{

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

}

\u548cOC\u5199\u6cd5\u5dee\u4e0d\u591a\uff1b
\u5229\u7528NSJSONSerialization\u5e8f\u5217\u5316\u6210NSData,\u518d\u901a\u8fc7NSString \u8f6c\u6210JSON\u5b57\u7b26\u4e32
func toJSONString(dict:NSDictionary!)->NSString{

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

}

下载在这儿下载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}

+(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

}

自己解决了,和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
}

扩展阅读:taylor alison swift ... swift bic怎么填写 ... swift跨境支付系统 ... swear 中文翻译 ... swift 中文翻译 ... 国际汇款必须要swift吗 ... 怎么查自己卡的swift码 ... switch 中文翻译 ... swallow 中文翻译 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网