永发信息网

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

答案:3  悬赏:0  手机版
解决时间 2021-02-20 02:16
swift里 怎么把字典或者数组转json字符串
最佳答案
自己解决了,和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
}
全部回答
下载在这儿下载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
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
中国太平洋财产保险股份有限公司百色中心支公
天河山怎么走?邯郸到天河山自驾车路线?
我的耳垂太厚 真的很难看 而且从正面看有点像
LJ501型钢筋切断机的切断钢筋范围若为(),则
珍宝岛旅游开放了吗??岛上现在有什么?
五年以内的七座以下小车年审免检,有谁知道环
山泉垂钓中心地址有知道的么?有点事想过去!
母子关系两条纯种贵宾交配生出来的狗是杂交吗
坚果哪个牌子好
近期我玩了《罗马2全面战争》,发现比以前的
【cad中 已知弧长和角度 咋么画弧啊?90度的弧
红颜知己女装NO.2地址在什么地方,想过去办事
五十斤桶装防水默绿色的桶装防水叫什么名称
人鬼情未了 美国版的 哪里可以下载 ????
山西医科大学能专升本吗?几年制 。。分数线
推荐资讯
职业大厅追随者怎么获得
西北沟南山这个地址在什么地方,我要处理点事
企业资信证书是什么
我是临床医学专业的本科生,想考临床心理学研
荣字的含义
(甩备注)什么意思解答
成都市蓉春堂连锁有限公司顺百泰药店在哪里啊
风格时尚地址在什么地方,想过去办事
露天一边倒桃树什么时候拉枝
长城超市地址在哪,我要去那里办事
义乌吉他培训哪里有?
中老年人养什么狗狗好呢
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?