swiftjson(swiftjson精度)

本篇文章给大家谈谈swiftjson,以及swiftjson精度对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

Swift中json转model报No value associated with key CodingKeys

在网络请求中,json转模型是最常见的操作了,在OC时代,我们通常用MJExtension进行转换。在Swift中,数据转换更加方便,只要模型遵循Codable协议,就可以原生进行转换。

例如,定义的模型如下:

服务器返回的数据是酱紫:

然后我们可以郑拿进行data-struct的转换

但是问题来了,有时候这个模型还需要别的存储属性,例如你需要一个名字为“is_show”的属性,默认值为false,于是struct改成了:

乍一看好像没有问题,但是一运行,Xcode就报No value associated with key CodingKeys,认真想了一下,原来是把is_show赋初值后就忘记加上“?”了,这样它就不是可选类型,但是返回的数据中又没橘丛模有这个字段圆缓,所以就报错了。因此,一个struct的存储属性应该都定义为可选类型。为了方便和安全,同时也应该赋初值。

最后修改成:

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

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

}

[img]

如何在 Swift 中优雅地处理 JSON

您好,我来为您解答敏敬迟:

我始终觉得还是点来点去的更加优雅,坚持了这么多年,别创新了,不习惯。

我也觉得,不过自己封装个类桥李似eval之类的函数应该也不麻烦,不过swift的语法看着真是纠结。

希望稿帆我的回答对你有帮助。

OC、swift数据JSON序列化后,浮点型数据丢失的问题

出现的问题:服务后端定义的数据类型为float、double时,前端进行序列化时数据精度丢失。

要么在后端处理,定义为string类型。要么在前端处理,将float、double转化为string!!

注意:在序列化前调用此方法!!

+ (NSString *)doubleConvertString:(NSString *)source

{

    NSString *targetStr = [NSString stringWithFormat:@"%@",source];

    if (source.length == 0)

    {

        return targetStr;

    }

    NSUInteger index = 0;

    NSString *p = [targetStr substringToIndex:1];

    NSString *rStr = p;

    NSString *lChar = p;

    NSString *llid = nil;

    BOOL inserted = false;

    NSArray *tarry = @[@"0",@"1",@"2",@"3",@"型念袭4",@"5",@"6",@"7",@"8",@"9"];

    while (index targetStr.length-1)

    {

        index++;

        NSString *currChar = [targetStr substringWithRange:NSMakeRange(index, 1)];

        BOOL cf = [tarry containsObject:currChar];

        if ([lChar isEqualToString: @":"] cf [llid isEqualToString:@"\""])

        {

         卜兄   inserted = true;

            rStr = [rStr stringByAppendingString:@"\""];

            llid = @"";

        }

        else if (inserted ([currChar isEqualToString: @"}"] || [currChar isEqualToString: @","]))

        {

            inserted = false;

            rStr = [rStr stringByAppendingString:@"\""];

        }

        rStr = [rStr stringByAppendingString:currChar];

        if (currChar.length 0 ![currChar isEqualToString:@" "])

        {

   高亏         if ([currChar isEqualToString:@"\""])

            {

                llid = currChar;

            }

            else if (![currChar isEqualToString:@":"])

            {

                llid = @"";

            }

            lChar = currChar;

        }

    }

    return rStr;

}

HandyJSON简单使用

HandyJSON 是阿里开发的一个在swift上把JSON数据转化为对应model的框架。与其他流行的Swift JSON库相比,HandyJSON的特点是,它支持纯swift类,使用也简单。它反序列化时(把JSON转换为Model)不要求Model从NSObject继承(因为它不是基于KVC机制),也不要求你为Model定义一个Mapping函数。只要你定义好Model类,声明它服从HandyJSON协议,HandyJSON就能自行以各个属性的属性名为Key,从JSON串中解析值。不过因为HandyJSON是基于swift的metadata来做的,如果swift的metadata的结构改了,HandyJSON可能就直接不能用了。当然阿里一直在维护这个框架,swift的源码有变化,相信框架也是相对于有改变的。 github地址 。

1、当然最简单的方式用cocoapod的方式导入啦

2、如果使用的是Carthage,也很简单

1、简单的解析,包括model中有json里不存在的,json中也有model里不存在的内容悔毕樱

2、包含对象嵌套的解析

3、包含数组对象的解析

4、 把字典转成对象

5、 包含自定义解析:当model的属性名和json里数肆的对应不上的时候,碧丛model里实现mapping函数去对应key。

Swift下面字典(json)和模型的转换

在OC下面字典和模型的转换有些非常好用的第三方旦滚框架,如(YYMode, MJExtension等),当然Swift也可以借鉴这两个框架,只是需要创建模型的时候继承自NSObject,并且加上关键字@objcMembers既可。

1、在用原生Codable协议的时候,需要当前类继承协议Codable,只是swift的枚举、结构体和类都可以继承该协议。这点事OC无法做到的。

2、在使用Codable协议的时候,一定要确保模型和原始json数据之间的key值的一致性。

列入有一段json字典如下(这里我用的字典)

那么你的模型就需要如下实现(当然这是理想状态)

3、如果你的模型里面有一个字段如(name_op)并且原始json数据里面没有该值,此时你的模型如果如下。

那么你解析成模型的时候会失败,此时需要把不确定的值定义为可选类型。那么不管原始json数据有没有这个字段,都可以解析成功,如果没有,那么该属性为nil。

4、如果你的模型已经设计好了,但是原始json数据里面有个字段和模行余你的字段事冲突的(如你的属性叫 nick 而原始数据为 nick_name ),那么该值是解析不成功的,如果是可选还好,至少能成功,否则就失败。

解决的办法是实现 enum CodingKeys: String, CodingKey {}这个映射关系

5、如果你的模型里面带有嵌套关系,比如你的模型里面有个其他模型或者模型数组,那么只要保证嵌套的模型里面依然实现了对应的协议,和当前模型一样即可。

6、如果模型里面和原始数据里面的类型不统一,那么这个带桥解析也会以失败告终。而这种情况需要自定义一个类去适配当前属性。最常见的有(Bool和Int,Int和String)这些在后台若类型语言上是不加区分的。所以不确定到底是什么类型,如果随意定义一个那么会失败。

如下:定义了一个可能是Bool或者Int的类型

下面是一个Int 或者String类型的

在设计模型的时候,如下赋值

若是完成上面几步,基本可以解决字典模型转换的巨大部分问题。贴上我设计的模型。

以及创建的字典

使用

关于swiftjson和swiftjson精度的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

相关阅读

  • pg数据仓库(iphone 数据库)

    pg数据仓库(iphone 数据库)

    【PG数据仓库】---### 简介PG数据仓库是一种基于PostgreSQL开发的数据仓库解决方案,旨在提供高性能、可扩展和稳定的数据存储和分析功能。通过PG数据仓库,用户可以将大量的数据进行存储、查询和分析,在实现数据驱动决策的同时提升企...

    2024.04.15 19:11:14作者:intanet.cnTags:pg数据仓库
  • sqlserver2016安装(sqlserver2016安装教程 简书)

    sqlserver2016安装(sqlserver2016安装教程 简书)

    标题:SQL Server 2016安装教程简介:SQL Server 2016是微软公司推出的一款全新的关系数据库管理系统,具有更强大的性能和更多的功能优化。本文将为大家介绍SQL Server 2016的安装过程,并提供详细的步骤指导。...

    2024.04.15 17:22:13作者:intanet.cnTags:sqlserver2016安装
  • 数据仓库数据中台(数据仓库详解)

    数据仓库数据中台(数据仓库详解)

    数据仓库数据中台---### 简介数据仓库数据中台是指将企业的数据仓库和数据中台进行整合,以实现数据的集中管理、统一分析和共享利用。数据仓库是企业存储历史数据的中心数据库,而数据中台则是对数据进行处理、分析和应用的平台。通过将两者整合,企业...

    2024.04.15 12:11:12作者:intanet.cnTags:数据仓库数据中台
  • 数据计算(数据计算及应用)

    数据计算(数据计算及应用)

    标题:数据计算简介:数据计算是指利用计算机和相关软件工具进行数据处理和分析的过程,已经成为现代社会中不可或缺的技术手段。本文将介绍数据计算的基本概念、重要性以及常见的数据计算方法。一、数据计算的基本概念数据计算是指在计算机系统上对大规模数据...

    2024.04.15 11:44:12作者:intanet.cnTags:数据计算
  • 数据库技术应用(数据库技术应用实验总结)

    数据库技术应用(数据库技术应用实验总结)

    数据库技术应用介绍:数据库技术是一种用于管理和存储数据的技术,已经被广泛应用于各个行业。它可以帮助组织有效地管理数据,提高工作效率,加强数据安全性。本文将详细介绍数据库技术的应用。一、数据结构数据库技术通过数据结构来存储和组织数据,常见的数...

    2024.04.15 07:11:12作者:intanet.cnTags:数据库技术应用
  • 安装mongodb(安装mongodb注意)

    安装mongodb(安装mongodb注意)

    简介:MongoDB是一种NoSQL数据库管理系统,使用文档存储模式,便于在应用程序内进行数据存储和检索。本文将介绍如何安装MongoDB。一、MongoDB下载首先,需要访问官方网站https://www.mongodb.com/下载Mo...

    2024.04.15 03:00:11作者:intanet.cnTags:安装mongodb
  • 存储过程sql注入(存储过程 sql注入)

    存储过程sql注入(存储过程 sql注入)

    简介:存储过程SQL注入是一种常见的安全漏洞,攻击者利用存储过程中的漏洞,通过恶意输入的SQL语句对数据库进行攻击。本文将详细介绍存储过程SQL注入的原理、危害以及防范措施。一级标题: 存储过程SQL注入原理存储过程是一系列SQL语句的集合...

    2024.04.15 01:22:12作者:intanet.cnTags:存储过程sql注入
  • 数据仓库etl(数据仓库ETL工具)

    数据仓库etl(数据仓库ETL工具)

    数据仓库ETL是数据仓库中一个非常重要的环节,它负责数据的抽取(extract)、转换(transform)和加载(load)。在数据仓库中,数据通常来自多个不同的来源,ETL的作用就是将这些数据整合到数据仓库中,以便进行进一步的分析和查询...

    2024.04.14 21:44:11作者:intanet.cnTags:数据仓库etl