关于YII中JSON的操作

【HSCNN解析】HSCNN:从欠采样光谱图重建高光谱图的CNN网络 本文介绍HSCNN,是一个将欠采样光谱图重建为高光谱图的纯CNN网络,2017年提出。 阅读详情

近日在了解YII中的JSON操作方法,发现内置了好几种进行JSON对象和字符串,包括JS的JSON互通的方法,下面是三种方式的JSON解析:

CJSON::encode( $json );
json_encode( $json );
CJavaScript::jsonEncode( $json );

我们还是来看个例子吧!先上代码吧:

$json = array (
		'item1' => array (
				'item11' => array (
						'n' => 'chenling',
						'm' => 'llll' 
				),
				'sex' => '男',
				'age' => 25,
				'admin'=>true 
		),
		'item2' => array (
				'item21' => 'ling',
				'sex' => '女',
				'age' => '24',
				'admin'=>false 
		) 
);

这上面是个三个层级的数组,数组的值包括了字符串、boolean、和数字,我们通过上面的三种方式来输出看看结果是什么:

$jsonObj = CJSON::encode( $json );
$jsono = json_encode( $json );
$jsonjs = CJavaScript::jsonEncode( $json );
echo $jsonObj.'<br />';
echo $jsonjs.'<br />';
echo $jsono.'<br />';

结果:

看来三种方式都可以,解析出来的也是一样的。如果要访问数组的值的话,用下面的 代码就行了。

echo $json['item1']['sex'].'<br />';
现在来看看转换成JSON对象的方法:

$jsonstr='{"item1":{"item11":{"n":"chenling","m":"llll"},"sex":"男","age":"25"},"item2":{"item21":"ling","sex":"女","age":"24"}}';
echo $jsonstr.'<br />';

//$j = CJSON::decode($jsonstr);
//$j = CJavaScript::jsonDecode($jsonstr);
<span style="color:#ff0000;"><strong>$j = json_decode($jsonstr,true);//当字符串为{"1":1,"2":1} 这种模式时,json_decode默认解析出来的结果是一个对象,此时可以设置它的第二个参数为true强制让它返回数组</strong></span>

上面两个方法转换都是没有问题的,关键是上面红色标注的就有问题了,如果我没有加后面的参数true的话,结果就是下面的报错信息,原因就是因为

当字符串为{"1":1,"2":1} 这种模式时,json_decode默认解析出来的结果是一个对象,此时可以设置它的第二个参数为true强制让它返回数组。


如果是下面的这个代码,则转换就没有问题

$jsonstr = '[1,2,3]';
$j = json_decode($jsonstr);//如果不加第二个参数的话,当字符串为[1,2,3] 这种模式时,json_decode默认解析出来的结果是一个数组
echo $j[2].'<br />';

所以这个是要注意的,同时我们可能遇到下面的这种情况的JSON字符串,这个也是要注意的!尤其是要注意转换完成后的数组访问方式:
$jsonstr='{"item1":[{"name":[{"chen":"chenling","ling":"chenli"}],"sex":"男","age":"25"},{"name":"sun","sex":"女","age":"24"}]}';
$j = CJSON::decode($jsonstr);
echo $j['item1'][0]['name'][0]['chen'].'<br />';
<strong><span style="color:#ff0000;">$j = json_decode($jsonstr,true);</span></strong>
echo $j['item1'][0]['name'][0]['chen'].'<br />';
$j = CJavaScript::jsonDecode($jsonstr);
echo $j['item1'][0]['name'][0]['chen'].'<br />';

这种情况也得注意,都是数组的情况下,只能通过索引进行访问,而不能通过key来访问。

$jsonstr='[["item1","item11"],["n","chenling"],["m","llll"]]';
$j = CJSON::decode($jsonstr);
echo $j[1][1].'<br />';
$j = json_decode($jsonstr);
echo $j[0][0].'<br />';
$j = CJavaScript::jsonDecode($jsonstr);
echo $j[0][0].'<br />';

也就是说在这三种的情况下:

CJSON和CJavaScript的方式是可以通用的,而json_的方式是需要第二个参数来决定的。所以为了兼容,我们还是尽量使用前两个进行JSON的转换操作;


转载请注明:  http://blog.youkuaiyun.com/qq415734794/article/details/7662449


UR5 机械臂手眼标定(Eye-in-Hand)实战:OpenCV 求解 AX=XB,误差 < 2mm 本文详细介绍了UR5机械臂在Eye-in-Hand配置下的手眼标定实战,通过OpenCV实现高精度标定,最终达到误差小于2mm的工业级精度要求。文章涵盖了标定基础原理、环境搭建、数据采集策略、核心算法实现及误差分析与优化,为视觉机械臂的自主抓取提供了实用指南。 阅读详情

相关推荐

19-5 ACC 自适应巡航控制系统需求

本专题由深圳季连AIgraphX李博及团队出品,主要讲解ACC自适应巡航控制系统的开发与仿真测试。具体说来,包括ACC标准/法规分析、系统需求、系统架构、软件需求、软件架构、算法建模、验证场景分析、仿真实验搭建等内容。 本节主要讲ACC系统需求。

AIgraphX 1089

php json转数组_一个Yii2框架把Model转JSON数据更漂亮的方式

公司在用 Yii2 作为主力 PHP 开发框架。经常需要在 JSON 里返回 Model 数据。 常用的方法是使用 Model 里的 fields 方法。 但问题是我们需要在不同的 JSON 里对同个对象返回不同的字段。比如列表里里返回 id 和 name,而在详细页里需要返回这个对象的大部分字段。这时候就很折腾,需要自己组装。 但最近在 Laravel 里发现一个更有意思的做法。它的概念叫 ...

weixin_39912368的博客 403

deepin启动异常处理

修复的命令在执行时会输出大量的修复信息,正常情况下修复完之后输入exit命令回车后,即可正常启动系统。

whxxiang的博客 4370

json 数据操作 查找,重组,分组,排序,分页

json 数据操作代码使用方法json数据where 筛选数据Find/FindKey 筛选数据 返回一条select 重组数据(仿C# select)GroupBy 根据指定字段分组OrderBy 根据指定字段排序ToArray 将指定字段的值转化为数组limit 分页sum 将指定列相加 代码 /** * 从json筛选数据 * @fn 筛选条件 */ function where(fn) { var $json = []; this.map(function(val, inde

weixin_42199478的博客 1718

电子取证之服务器取证思路

服务器取证是一个技术性很强的领域,涉及到多个环节,包括网站重构、网站代码分析、容器分析等。数据库密码的获取通常通过查看配置文件、日志文件、备份等途径,同时可以通过一些绕过技术如禁用身份验证来获取权限。对于不同的数据库,需要根据其特性采取相应的应对方法和命令。

2401_84830066的博客 2489

深信服aCloud虚拟存储VS3.0实战:从数据分片到仲裁机制的全流程解析

本文深度解析了深信服aCloud虚拟存储VS3.0的核心架构与生产级实践。从数据分片、条带化写入、多副本机制到智能缓存分层,详细阐述了其如何实现高性能与高可靠性的平衡。同时,深入剖析了动态均衡、平滑扩容以及故障恢复与仲裁机制,为运维人员和技术决策者提供了在超融合基础架构(HCI)中部署和管理虚拟存储的实战指南。

net55的博客 588

yii mysql 查询 类型转换_yii2 数据库查询结果字段类型的问题

yii2数据库查询默认返回的为 AR对象,此时字段类型与 数据库 的基本相符,但如果使用 asArray以数组的方式返回时,默认字段类型全都是 string,如果这样 json_encode后返回给 App端的话,会被 Android/IOS这些强类型语言端的工程师们喷死, php会再次被推向风口。原因是 pdo在 yii2盛行时还不够完善,一...

weixin_33905037的博客 362

ABAP 系统里使用 SAP Joule 辅助编程的前提条件

只是说这些大语言模型是针对互联网上能够挖掘到的所有数据进行训练,不像 SAP Joule 那样术业有专攻,仅仅深耕 SAP 技术和业务领域,因此大伙儿对 SAP Joule 的期望值,也远远高于通过大语言模型。SAP Joule 从 ABAP Development Tool 的 Chat 窗口中接收到的对话请求,都会路由到 SAP BTP 上的 AI Foundation.在上述 ABAP 环境中启用 SAP Joule,需要购买额外的 license:8019124.

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 796

postgreSql查询复杂json数组字段

因为在生产环境中使用到两次 故而记录一下对复杂json字段提取字段值的SQL 先看数据格式:假设表名为 ry;下面的数据格式是我们的字段ryxx { "bh": "123", "jbxx": [{ "xm": "张三", "nl": "30" },{ "xm": "李四", "nl": "35" }] } 问题来了 我要去ryxx里面的所有人的姓名 那么改怎么取呢? 可以先把ryxx这个字段查出来 ..

qq_38475119的博客 8369

【固态变压器(SST)全维度解析】发展历史、技术、玩家、挑战与数据中心趋势

SST正处于技术突破向规模化商用的关键过渡期,随着SiC/GaN器件降价、标准完善、可靠性数据积累,其在数据中心的渗透率将快速提升。短期(2025 - 2027年)以示范项目为主,中长期(2030年后)有望成为超大规模智算中心的主流供电方案。

昔时扬尘处 2127

YOLO26涨点改进 | 全网独家复现、小目标检测改进篇 | TGRS 2025 | YOLO26引入MFAE-YOLO中的GFFP、FCPS 和 C3k2-FPEU创新点,涨点起飞,直接发论文

🔥本文给大家介绍在YOLO26中引入MFAE-YOLO中的 GFFP(全局特征融合处理)、FCPS(特征通道像素注意力) 和 C3k2-FPEU(特征池提取单元) 二次创新改进模块,能显著提升对小目标的检测性能。GFFP通过多尺度特征融合增强全局上下文感知能力,有效提升小目标在复杂背景下的可辨性;FCPS融合通道、像素和空间注意力机制,增强了模型对关键细节和小区域特征的关注,提升检测精度;C2F-FPEU利用多种池化方式挖掘细节特征,优化浅层特征表示能力。三者协同提升了YOLO26在小目标检测中的鲁棒性。

Ai缝合怪、助力小伙伴高效发论文 306

yii2关于json的操作

yii\helpers\Json 继承于BaseJson yii\helpers\BaseJson htmlEncode 静态方法 将给定的值编码为 JSON 字符串进行 HTML-escaping 转义实体,这样就可以安全地嵌入 HTML 代码中。 该方法通过支持 JavaScript 表达式来增强 json_encode()。 HTML-escaping解释:对html来说,<, > , ?, & 和引号等有特殊意义,例如连接, 如果你确实需要在网页显示html标签,

项目中的细节控 1258

Openclaw 附录B 常用Skills清单

核心作用支持URL、网页、PDF、图片、音频和YouTube视频的摘要与字幕提取,由OpenClaw创始人@steipete开发的官方内置Skill。安装⚠️说明:原推荐的summarize未在ClawHub验证到,YouTube字幕提取功能已内置于summarize中。使用场景“提取这个2小时Next.js教程视频的核心代码逻辑,按章节整理成学习笔记”推荐指数:⭐⭐⭐⭐。

Maynor的博客 857

Yii返回为json字符串而非json对象修改

添加,且去除json_encode。

༺墨༒眉༻ 225

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

yii2 ajax登陆访问,yii2控制器Controller Ajax操作示例

yii2控制器Controller Ajax操作示例发布于 2017-07-31 14:58:09 | 77 次阅读 | 评论: 0 | 来源: 网友投递Yii2 PHP 框架Yii 2 完全根据 Yii 1.1 版本重写,后者是最流行的 PHP 框架之一。Yii 2 继承了 Yii 的简洁、快速、和高扩展性。Yii 2 需要 PHP 5.4,并且拥有现代 Web 应用开发中最好的实例和协议。这篇...

weixin_31162247的博客 311

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

php yii2自动给值,Yii2 自动解码/ 编码json属性值

Yii2 json attribute behaviorAuto decode/encode attribute value in json, provide array access and json validator.WARNING! From version 2.0.14 Yii has built-in DB JSON-type, and this behavior is no long...

weixin_34788662的博客 391

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

yii2 mysql 版本_yii2 basic版本的一些配置

1.nginx配置 重写规则 修改访问模式为 http://wh.store/admin/index文件位置: /home/wwwroot/default/yii2-app-basic/config/web.php'urlManager' => ['enablePrettyUrl' => true,'showScriptName' => false,'rules' => ...

weixin_39889597的博客 163

phpyii框架倒叙_YII框架常用技巧总结

本文实例总结了YII框架常用技巧。分享给大家供大家参考,具体如下:获取当前Controller name和action name(在控制器里面使用)echo $this->id;echo $this->action->id;控制器获取当前模块$this->module->id不生成label标签// ActiveForm类$form->field($model,...

weixin_39577964的博客 343

Yii2+ElasticSearch增删改查实现

构建该model之前需要自行配置yii2-elasticsearch组件安装 我是通过composer安装的 在composer.json中 安装完成之后 然后需要在yii的配置文件中加入小组件相关配置 接下来就是构建业务模型 集成的ActiveRecord类应该为组件目录下的AR类 use yii\elasticsearch\ActiveRecord 这个AR了重写了yii2的AR类部分方法,有些查询需要原生es语句才可以。 Model: class HospitalEsModel extend

xiadiganhuo的博客 860

yii2 ajax访问控制器,yii2控制器Controller Ajax操作示例

yii2控制器Controller Ajax操作示例2020-06-20 01:23:43本文实例讲述了yii2控制器Controller Ajax操作的方法。分享给大家供大家参考,具体如下:public function actionSample(){if (Yii::$app->request->isAjax) {$data = Yii::$app->request->...

weixin_35188854的博客 270

php扫描目录入库,yii框架,扫描目录下文件入数据库

需求:带yii框架下写一个定时任务,扫描某一目录$target下的json文件,并导入指定的数据库中实现:1.把需要入库的json文件放在指定目录$target下2.执行定时任务,导入到mongo库Vote_teacher中/opt/modules/php/bin/php /www/web/protected/yiic.php import VoteTeacher3.定时任务代码:/web/pro...

weixin_29531177的博客 308

yii框架数据库操作

查一条数据 $model = new Merchant(); $merchant_id = Yii::$app->request->get('merchant_id'); $data = $model::find()->where(['id'=>$merchant_id])->one();

yang_ldgd的博客 384

window 环境安装composer和yii

参考网站: 1.http://www.yiiframework.com/download/ 2.https://getcomposer.org/doc/00-intro.md#installation-windows(英文版) 3.http://docs.phpcomposer.com/00-intro.html#Installation-Windows 主要是为了安装yii,以前装过co

Ethan19的专栏 1786

YII BaseWebController类定义

&lt;?php namespace app\common\components; use yii\web\Controller; use Yii; use yii\web\HttpException; class BaseWebController extends Controller { public $enableCsrfValidation = false; publ...

weixin_42878826的博客 289

yii之ActiveRecord的一些用法

作者:zccst Yii的ActiveRecord是与数据库打交道的类,也即MVC中的M(模型层),也是ORM的O(Object)。 里面水很深,还有很多不知道的特性,今天列举一二,以后慢慢补充 1,对象转数组 $model = new ActiveRecord(); $model.toArray(); 由于ActiveRecord不是简单数组,不能直接json...

zccst的专栏 452

Yii2 访问web目录,报错Calling unknown method: yii\web\UrlManager::addRules()

假定yii2的应用目录是 http://localhost/yii2/ => "/" 1:   找到 / 下的composer.json中的extra键:    "asset-installer-paths": { "npm-asset-library": "vendor/npm", "bower-asset-library": "vendor...

weixin_30443813的博客 151
上一篇: YII对象结果转为数组或直接输入JSON格式
下一篇: Yii数组转化为对象
sofia1217
博客等级 码龄17年 36粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值