json字符串有两段大括号包含的部分怎么办?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了json字符串有两段大括号包含的部分怎么办?相关的知识,希望对你有一定的参考价值。
格式如:
"list":[],"request_id":1210082175
"list":["fs_id":3446617934,"path":"\/apps\/laipan\/\u65b0\u5efa\u6587\u4ef6\u5939","ctime":1368704917,"mtime":1368704917,"md5":"","size":0,"isdir":1,"fs_id":278871928,"path":"\/apps\/laipan\/haha.mp3","ctime":1368599076,"mtime":1368599076,"md5":"e7ab31b538a793cf34372f1104011f50","size":2625077,"isdir":0],
"request_id":1729354691
如上,想取得第二个大括号内的数据怎么办?最好有php的方法,谢谢!
Array ( [list] => Array ( ) [request_id] => 1040611990 )
Array ( [list] => Array ( [0] => Array ( [fs_id] => 3446617934 [path] => /apps/laipan/新建文件夹 [ctime] => 1368704917 [mtime] => 1368704917 [md5] => [size] => 0 [isdir] => 1 ) [1] => Array ( [fs_id] => 278871928 [path] => /apps/laipan/沧海一声笑.mp3 [ctime] => 1368599076 [mtime] => 1368599076 [md5] => e7ab31b538a793cf34372f1104011f50 [size] => 2625077 [isdir] => 0 ) ) [request_id] => 1695237673 )
$arr=json_decode($a,true);
这个$arr就是根据你的json转化成的数组 想取第二个括号内的数据 根据数组格式来就好了 你可以先把$arr打出来看看追问
这个$arr的形式就是像问题补充里的那样,两个Array连在一起,中间没有分隔符。该怎么取呢?
追答不太懂你的意思 你意思是上面那两串json是放在一个变量里的 然后你只想取第二个json的值是吗
参考技术A 用json_decode(),第二个参数给个true,就能将json转成php的数组追问这个我知道,问题是这样得到的数组像是两个,怎样取第二个呢?中间没有逗号的。得到的如问题补充的数组。
如何从文件系统发送包含 json 字符串和大文件的多部分数据的 HTTP 请求?
【中文标题】如何从文件系统发送包含 json 字符串和大文件的多部分数据的 HTTP 请求?【英文标题】:How to send an HTTP request with multipart data containing a json string and a big file from the file system? 【发布时间】:2015-11-20 12:14:50 【问题描述】:上下文
我想发送一个包含由两段组成的多部分正文数据的 HTTP 请求:
-
包含一些元数据的 JSON 字符串
一些文件二进制数据
我已经知道的
正如answer 中所述,这可以很容易地完成。但是在文件可能很大的情况下会发生什么?有了这个新的约束,我们自然不能将数据封装在 NSData
对象中,因为这会占用大量的内存资源。
熟悉NSURLRequest
类的人的第一个想法是使用HTTPBodyStream
属性而不是HTTPBody
。但是如何获得一个可以同时写入 JSON 和文件数据段(以及边界和其他必需的 HTTP 内容)的流呢?
出路是继承NSInputStream
。事实上,我注意到 AFNetworking 框架使用了这种方法。但据我所知,NSStream
类中有很多未记录/奇怪的方法可以覆盖,如here 所述,在我看来,这听起来需要做很多(潜在危险的)工作实现一些看似简单的事情。
问题
有没有办法实现所需的行为?请考虑以下限制:
没有第三方框架 使用干净的方法(不要覆盖未记录的方法,因为它们可能会在未来的 SDK 上发生变化)【问题讨论】:
【参考方案1】:你可以使用我的开源POSInputStreamLibrary。它提供了流式传输您想要的任何数据的能力。您唯一需要做的就是实现POSBlobInputStreamDataSource 协议并将实现用作POSBlobInputStream 的参数。
如果您强烈限制使用 3rd 方框架,您可以使用 POSBlobInputStream 作为示例,它实现了私有 API 方法以使自定义 NSInputStream 可行。
请随时询问有关实施细节的任何问题,祝您好运。
【讨论】:
感谢您的回答。这看起来是一种有趣的方法,我想它会解决我的问题。但是我查看了您的 POSBlobInputStream 类实现,发现您还没有实现 '_scheduleInCFRunLoop:forMode:'、'_setCFClientFlags:callback:context:' 和 '_unscheduleFromCFRunLoop:forMode:' 方法。这些是我在问题中提到的“危险的无证”方法。根据我在此链接中阅读的内容:blog.bjhomer.com/2011/04/subclassing-nsinputstream.html 它们可能导致应用崩溃 当然,我还没有实现任何东西。根据您的经验,您是否认为 NSInputStream 子类应该在不实现这些方法的情况下正常工作? 感谢@GabrielHuff 的提问。神奇之处在于方法resolveInstanceMethod:
。它在传入的未知选择器中删除“_”前缀,并尝试将调用重定向到没有它的方法。 POSBlobInputStream.m_scheduleInCFRunLoop:forMode:
、_setCFClientFlags:callback:context:
和_unscheduleFromCFRunLoop:forMode:
不带下划线的同伴可以查看POSBlobInputStream.m以上是关于json字符串有两段大括号包含的部分怎么办?的主要内容,如果未能解决你的问题,请参考以下文章
如何从文件系统发送包含 json 字符串和大文件的多部分数据的 HTTP 请求?
用于匹配 JSON 子字符串某些部分的 Java 正则表达式