- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
这是我的 Json 数据。
{
"products":[
{
"capacity":4,
"image":"http:\/\/d1a3f4spazzrp4.cloudfront.net\/car-types\/mono\/mono-uberx.png",
"display_name":"uberX",
"product_id":"a1111c8c-c720-46c3-8534-2fcdd730040d",
"description":"The low-cost Uber"
},
{
"capacity":6,
"image":"http:\/\/d1a3f4spazzrp4.cloudfront.net\/car-types\/mono\/mono-uberxl2.png",
"display_name":"uberXL",
"product_id":"821415d8-3bd5-4e27-9604-194e4359a449",
"description":"low-cost rides for large groups"
},
{
"capacity":4,
"image":"http:\/\/d1a3f4spazzrp4.cloudfront.net\/car-types\/mono\/mono-black.png",
"display_name":"UberBLACK",
"product_id":"d4abaae7-f4d6-4152-91cc-77523e8165a4",
"description":"The original Uber"
},
{
"capacity":6,
"image":"http:\/\/d1a3f4spazzrp4.cloudfront.net\/car-types\/mono\/mono-suv.png",
"display_name":"UberSUV",
"product_id":"8920cb5e-51a4-4fa4-acdf-dd86c5e18ae0",
"description":"Room for everyone"
},
{
"capacity":4,
"image":"http:\/\/d1a3f4spazzrp4.cloudfront.net\/car-types\/mono\/mono-taxi.png",
"display_name":"uberTAXI",
"product_id":"3ab64887-4842-4c8e-9780-ccecd3a0391d",
"description":"Taxi without the hassle"
}
]
}
我希望所有值都由键表示,即容量、图像、显示名称、产品ID、描述
,并保存在下面给出的列表中
var array_capacity = Array<Int>();
var array_image = Array<String>();
var array_display_name = Array<String>();
var array_product_id = Array<String>();
var array_description = Array<String>();
但是它崩溃了。我认为这是因为一些类型转换问题。
这是我的解析代码。
var responseDict: NSDictionary = NSJSONSerialization.JSONObjectWithData(responseData,options: NSJSONReadingOptions.MutableContainers, error:nil) as NSDictionary
if(!(responseDict==nil)){
var products: NSArray = responseDict["products"] as NSArray
for item in products { // loop through data items
let obj = item as NSDictionary
for (key, value) in obj {
// print(key as String);
array_product_id.append(value as String);
array_display_name.append(value as String);
array_image.append(value as String);
array_description.append(value as String);
array_capacity.append(value as Int);
}
}
}
日志
libswiftCore.dylib`swift_dynamicCastObjCClassUnconditional:
0x109c55f30: pushq %rbp
0x109c55f31: movq %rsp, %rbp
0x109c55f34: pushq %rbx
0x109c55f35: pushq %rax
0x109c55f36: movq %rsi, %rcx
0x109c55f39: movq %rdi, %rbx
0x109c55f3c: xorl %eax, %eax
0x109c55f3e: testq %rbx, %rbx
0x109c55f41: je 0x109c55f5d ; swift_dynamicCastObjCClassUnconditional + 45
0x109c55f43: movq 0x7858e(%rip), %rsi ; "isKindOfClass:"
0x109c55f4a: movq %rbx, %rdi
0x109c55f4d: movq %rcx, %rdx
0x109c55f50: callq *0x63112(%rip) ; (void *)0x000000010be04000: objc_msgSend
0x109c55f56: testb %al, %al
0x109c55f58: movq %rbx, %rax
0x109c55f5b: je 0x109c55f64 ; swift_dynamicCastObjCClassUnconditional + 52
0x109c55f5d: addq $0x8, %rsp
0x109c55f61: popq %rbx
0x109c55f62: popq %rbp
0x109c55f63: retq
0x109c55f64: leaq 0xecc7(%rip), %rax ; "Swift dynamic cast failed"
0x109c55f6b: movq %rax, 0x7fbe6(%rip) ; gCRAnnotations + 8
0x109c55f72: int3
0x109c55f73: nopw %cs:(%rax,%rax)
最佳答案
这里的问题是您正在快速迭代 NSDictionary。 NSDictionary 似乎不符合快速序列,因此您使用键值对 NSDictionary 进行迭代会崩溃。使用 NSDictionary 的 allKeys 方法并定期提取值,就像您对 Objective C 所做的那样,
if let jsonData = jsonString?.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false){
if let jsonObject = NSJSONSerialization.JSONObjectWithData(jsonData, options: NSJSONReadingOptions.AllowFragments, error: nil) as? [String: AnyObject]{
if let products: AnyObject = jsonObject["products"]{
for aProduct in products as NSArray{
for aKey in (aProduct as NSDictionary).allKeys{
println(aKey)
}
}
}
}
}
您做错的一件事是将字典中的值附加到,并且您正在使用动态转换将其转换为字符串或 Int。这不是正确的做法,它会再次使您的代码崩溃,您可以选择检查它是否可以使用 if let 转换为类型,然后将该值附加到您的数组。
关于ios - 如何在 Swift/iOS 中解析 Json 并获取所需的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25739894/
我一直在使用 AJAX 从我正在创建的网络服务中解析 JSON 数组时遇到问题。我的前端是一个简单的 ajax 和 jquery 组合,用于显示从我正在创建的网络服务返回的结果。 尽管知道我的数据库查
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我在尝试运行 Android 应用程序时遇到问题并收到以下错误 java.lang.NoClassDefFoundError: com.parse.Parse 当我尝试运行该应用时。 最佳答案 在这
有什么办法可以防止etree在解析HTML内容时解析HTML实体吗? html = etree.HTML('&') html.find('.//body').text 这给了我 '&' 但我想
我有一个有点疯狂的例子,但对于那些 JavaScript 函数作用域专家来说,它看起来是一个很好的练习: (function (global) { // our module number one
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 8 年前。 Improve th
我需要编写一个脚本来获取链接并解析链接页面的 HTML 以提取标题和其他一些数据,例如可能是简短的描述,就像您链接到 Facebook 上的内容一样。 当用户向站点添加链接时将调用它,因此在客户端启动
在 VS Code 中本地开发时,包解析为 C:/Users//AppData/Local/Microsoft/TypeScript/3.5/node_modules/@types//index而不是
我在将 json 从 php 解析为 javascript 时遇到问题 这是我的示例代码: //function MethodAjax = function (wsFile, param) {
我在将 json 从 php 解析为 javascript 时遇到问题 这是我的示例代码: //function MethodAjax = function (wsFile, param) {
我被赋予了将一种语言“翻译”成另一种语言的工作。对于使用正则表达式的简单逐行方法来说,源代码过于灵活(复杂)。我在哪里可以了解更多关于词法分析和解析器的信息? 最佳答案 如果你想对这个主题产生“情绪化
您好,我在解析此文本时遇到问题 { { { {[system1];1;1;0.612509325}; {[system2];1;
我正在为 adobe after effects 在 extendscript 中编写一些代码,最终变成了 javascript。 我有一个数组,我想只搜索单词“assemble”并返回整个 jc3_
我有这段代码: $(document).ready(function() { // }); 问题:FB_RequireFeatures block 外部的代码先于其内部的代码执行。因此 who
背景: netcore项目中有些服务是在通过中间件来通信的,比如orleans组件。它里面服务和客户端会指定网关和端口,我们只需要开放客户端给外界,服务端关闭端口。相当于去掉host,这样省掉了些
1.首先贴上我试验成功的代码 复制代码 代码如下: protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
什么是 XML? XML 指可扩展标记语言(eXtensible Markup Language),标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。 你可以通过本站学习 X
【PHP代码】 复制代码 代码如下: $stmt = mssql_init('P__Global_Test', $conn) or die("initialize sto
在SQL查询分析器执行以下代码就可以了。 复制代码代码如下: declare @t varchar(255),@c varchar(255) declare table_cursor curs
前言 最近练习了一些前端算法题,现在做个总结,以下题目都是个人写法,并不是标准答案,如有错误欢迎指出,有对某道题有新的想法的友友也可以在评论区发表想法,互相学习🤭 题目 题目一: 二维数组中的
我是一名优秀的程序员,十分优秀!