NSDictionary 和 JSON 值
Posted
技术标签:
【中文标题】NSDictionary 和 JSON 值【英文标题】:NSDictionary and JSON value 【发布时间】:2014-03-27 15:02:32 【问题描述】:我的 JSON 中有这个:
"idAlunoGraduacao":001,"semestre":2,"ano":2010,"frequencia":100,"notaFinal":6,"conceito":"Aprovado","idTurma":"Biofisica",
"idAlunoGraduacao":002,"semestre":2,"ano":2010,"frequencia":88,"notaFinal":9.2,"conceito":"Aprovado","idTurma":"Diversidade sexual"
在我的 .h 文件中,我有这个循环:
for (NSDictionary *dados in results)
NSLog(@"%@",[dados objectForKey:@"notaFinal"]);
第一个“notaFinal”是 6 并且打印正常,但是当打印第二个时结果是:9.199999999999999
为什么?
【问题讨论】:
这不是 JSON。 JSON 不会有两个
括起来的字符串,中间有一个逗号,它们之外没有任何内容。
至于你明显的问题,搜索“浮点不准确”。
您可以考虑在显示/输出上格式化浮点数以避免这种情况;例如NSLog(@"Value: %.2f", [dados objectForKey:@"notaFinal"]);
使用 NSObject 模型类来解析这个字典
【参考方案1】:
您的 JSON 不是 JSON,下一个代码是 JSON:
[ “idAlunoGraduacao”:1, “学期”:2, “无”:2010 年, “频率”:100, "notaFinal": 6, “conceito”:“Aprovado”, “idTurma”:“Biofisica” , “idAlunoGraduacao”:2, “学期”:2, “无”:2010 年, “频率”:88, “notaFinal”:9.2, “conceito”:“Aprovado”, “idTurma”:“多元化性” ]
此外,您的 JSON 与 Literal NSDictionary 非常相似。
@@"idAlunoGraduacao":@001,@"semestre":@2,@"ano":@2010,@"frequencia":@100,@"notaFinal":@6,@"conceito":@"Aprovado",@"idTurma":@"Biofisica";
然后,你说:“在我的 .h 文件中我有这个循环:”,我很确定你的 .m 中有这个循环
在 Objective-C 中是使用curly brackets
in for 循环和 if-else 的最佳实践:
for (NSDictionary *dados in results)
NSLog(@"%@",[dados objectForKey:@"notaFinal"]);
最后,正如@Koray_Alkan 所说,您可以使用
NSLog(@"Value: %.2f", [[dados objectForKey:@"notaFinal"] floatValue]);
【讨论】:
以上是关于NSDictionary 和 JSON 值的主要内容,如果未能解决你的问题,请参考以下文章
如何修复错误无法将 [NSDictionary] 快速转换为 NSDictionary?
如何返回数据类型:Swift 中的 NSDictionary