用PHP解析类JSON字符串为数组的实现
题目:把字符串嵌套关系转换成数组,字符串只包含成对中括号、数字和逗号
字符串:(1,(1,2,(1,(1,2,(1)),3)),3,(1,(1,2,((1((1,(1,2,(1,2,3),4,5),3),2)),2)),((1,2,3),2,3),4,5),5)
程序:
$string = '(1,(1,2,(1,(1,2,(1)),3)),3,(1,(1,2,((1,((1,(1,2,(1,2,3),4,5),3),2)),2)),((1,2,3),2,3),4,5),5)'; $result = $previous = [];
$current = $number = null; $i = 0;
while ( isset($string[$i]) ) {
$value = $string[$i]; switch ($value) {
case '(':
if ( is_null($current) ) {
$current = &$result;
} else {
$previous[] = &$current;
$current[] = [];
$current = &$current[count($current) - 1];
}
break;
case ')':
if ( !is_null($number) ) {
$current[] = intval($number);
$number = null;
} $last = count($previous) - 1;
$current = &$previous[$last];
array_pop($previous);
break;
case ',':
if ( !is_null($number) ) {
$current[] = intval($number);
$number = null;
}
break;
default:
$number .= $value;
break;
} $i++;
} echo json_encode($result);
输出结果:[1,[1,2,[1,[1,2,[1]],3]],3,[1,[1,2,[[1,[[1,[1,2,[1,2,3],4,5],3],2]],2]],[[1,2,3],2,3],4,5],5]
用PHP解析类JSON字符串为数组的实现的更多相关文章
- JSON.parse() 方法解析一个JSON字符串
JSON.parse() 方法解析一个JSON字符串,构造由字符串描述的JavaScript值或对象.可以提供可选的reviver函数以在返回之前对所得到的对象执行变换. 语法EDIT JSON.pa ...
- python解析复杂json字符串
因为项目需要,公司领导对提出了接口测试的要求,因此作为一个测试人员,我第一时间就想到了jmeter这个利器,前面文章也有说明过怎么用jmeter做http协议的接口测试,这里我不再做讲解,此篇主要讲解 ...
- 前端(十四)—— JavaScript常用类:Number、Date类、字符串、数组、Math类、正则
JS常用类:Number类.Date类.Math类.字符串.数组.正则 一.Number 1.常用数字 整数:10 小数:3.14 科学计数法:1e5 | 1e-5 正负无穷:Infinity | - ...
- Gson解析复杂JSON字符串的两种方式
JSON解析可以使用的库: JSONObject(源自Android官方). Gson(源自Google). Jackson(第三方开源库). FastJSON(第三方开源库). 本文例子使用Goog ...
- php json字符串转为数组或对象
从网上查到的方法是 用get_object_vars 把类类型转换成数组 然后在用foreach 遍历即可 $array = get_object_vars($test); $json= '[{&q ...
- json 字符串包含数组转换为object对象是报异常java.lang.ClassCastException: net.sf.ezmorph.bean.MorphDynaBean cannot be cast to
前台传到后台的json字符串 前台实现这种格式json字符串方式: function contentFun(){ respType = respTypeFun(); return "{\&q ...
- c# json字符串转数组
JArray jo = (JArray)JsonConvert.DeserializeObject("这里是json字符串");
- 解析嵌套json字符串,一个json字符串中嵌套另一个json字符串
我现在有一个字符串是这样: { "msg": { ", "attrName": "sensorData", "trans ...
- (Hive)史上最难解析的json字符串解析出来了!!
首先说下解析的数据如下: {"username":"king","actionInfo":{"id":1,"a ...
随机推荐
- list中的中文转换编码显示
for i in range(1,sheet.nrows): row=sheet.row_values(i,0,sheet.ncols) row=str(row).replace('u\'','\'' ...
- zigbee学习之路(十二):zigbee协议原理介绍
一.前言 从今天开始,我们要正式开始进行zigbee相关的通信实验了,我所使用的协议栈是ZStack 是TI ZStack-CC2530-2.3.0-1.4.0版本,大家也可以从TI的官网上直接下载T ...
- [ASM C/C++] C语言函数的可选性自变量
函数的可选性自变量 C语言允许定义自变量数量可变的函数,称为variadic函数.variadic函数需要固定数目的强制性自变量,后面是数量可变的可选性自变量. 也就是说必须至少有一个强制性 ...
- libevent源码分析:event_assign、event_new
在libevent中,获取event类型对象的方法有两种,event_assign.event_new 1.event_assign() /** Prepare a new, already-allo ...
- 瘋子C语言笔记(结构体/共用体/枚举篇)
(一)结构体类型 1.简介: 例: struct date { int month; int day; int year; }; struct student { int num; char name ...
- iOS上传文件代码,自定义组装body
以下代码为上传文件所用代码,简单方便,搞了好久,终于知道这么简单的方式来上传. 其它类库也就是把这几句代码封装的乱七八糟得,让你老久搞不懂原理.不就是在body上面加点字符串,body下面加点字符串, ...
- 首师大附中科创教育平台 我的刷题记录 3120 LJX的校园:入学典礼
今天给大家献上"C"级题:LJX的校园:入学典礼!! 试题编号:3120 LJX的校园:入学典礼 难度级别:C: 运行时间限制:45ms: 运行空间限制:256000K ...
- view animation
动画分为 帧动画 drawable animation 补间动画 view animation 属性动画 property animation 作用效果: 加载信息时loading动画 act ...
- 我的git学习
当遇到不想commit的,而status已经现实出来了,可以使用 git rm -r --cached "fine name or 文件夹" 出现 Git – fatal: U ...
- 剑指offer七:两个链表的第一个公共结点
输入两个链表,找出它们的第一个公共结点. import java.util.*; public class Solution { public ListNode FindFirstCommonNode ...