jsondecode
php文件为什么不输出json字符串
php直接输出json格式,很多新手有一个误区,以为用echo json_encode($data);这样就是输出json数据了,没错这样输出文本是json格式文本而不是json数据,正确的写法是应该加一句:<?phpheader('Content-type:text/json'); //这句是重点,它告诉接收数据的对象此页面输出的是json数据;$json={"name":"yovae","password":"12345"}; //虽然这行数据形式上是json格式,如果没有上面那句的话,它是不会被当做json格式的数据被处理的;echo $json;?>上面的文章点。header('Content-type:text/json'); 只是http协议中标识出,输出是什么类型的内容。实际使用中,有时随然此值,不是text/json 浏览器依然可以正常解析成为json格式,只是因为浏览器端,做了json格式内容的自动识别,或者有浏览器插件,做了自动识别。
php json_decode()问题,为什么是空值?
原因是你在解码时没有设置MemoryStream中流的位置,改成下面这样就行了,还有MemoryStream构造方法里的那个长度指的是字节数组的长度,如果你在编码时使用的是Unicode编码的话,解码的时候就不能得到原始的字符串了。
string XML = "asdasdasd";
System.IO.MemoryStream XMLStream = new System.IO.MemoryStream(XML.Length);
XMLStream.Write(ASCIIEncoding.ASCII.GetBytes(XML), 0, XML.Length);
System.IO.StreamReader Reader = new System.IO.StreamReader(XMLStream);
XMLStream.Position = 0;
String Output = Reader.ReadToEnd();
建议改为
string XML = "asdasdasd";
byte[] byteArr = Encoding.ASCII.GetBytes(XML);
System.IO.MemoryStream XMLStream = new System.IO.MemoryStream(byteArr.Length);
XMLStream.Write(byteArr, 0, byteArr.Length);
XMLStream.Position = 0;
System.IO.StreamReader Reader = new System.IO.StreamReader(XMLStream, Encoding.ASCII);
String Output = Reader.ReadToEnd();
PHP json_decode(); 为什么没输出
我们知道网络api并不是百分百可靠,当遇到网络不稳定,接口出错等各种因素,并不一定返回标准的json数据,例如://如果从网络api抓取失败,返回的response为错误信息$response = 'request timeout';//json_decode之后返回NULL,你打印之后仍然没有输出,所以你采纳的那个答案仍然也帮不到你print_r(json_decode($response, true));//使用var_dump打印虽然可以看到NULL值,可是这并没有任何用处var_dump(json_decode($response, true));系统函数json_decode()在解析非json字符串返回NULL,解析乱码的json也返回NULL,你压根都不知道到底是哪里出了问题,因为NULL该返回值是不能通过print_r打印出来的,而官方php手册给了一些捕获异常信息的方法已经封装在下面的函数中了:<?php/** * json解析接口,优化json_decode对数组的解析 * @param string $json_code json字符串 * @return mix 错误信息或者数组 */function _json_decode($json_code){ $json_arr = json_decode($json_code ,true); switch (json_last_error()){ case JSON_ERROR_NONE: $error = ''; break; case JSON_ERROR_DEPTH: $error = ' - Maximum stack depth exceeded'; break; case JSON_ERROR_STATE_MISMATCH: $error = ' - Underflow or the modes mismatch'; break; case JSON_ERROR_CTRL_CHAR: $error = ' - Unexpected control character found'; break; case JSON_ERROR_SYNTAX: $error = ' - Syntax error, malformed JSON'; break; case JSON_ERROR_UTF8: $error = ' - Malformed UTF-8 characters, possibly incorrectly encoded'; break; default: $error = ' - Unknown error'; break; } if($error) { return $error.':'.$json_code; }else{ return $json_arr; }}header('Content-type:text/html;charset=utf-8');$json = 'this is not a json code';$arr = _json_decode($json);if(is_array($arr)){ //解析正确,逻辑代码部分 print_r($arr);}else{ //请求超时, 一般都会有异常处理机制, 例如重新发起请求if($result == 'request timeout') {//发起请求}else{//如果没有异常处理机制,抛出异常给上一层处理throw new Exception($result);}}使用_json_decode的返回值如果是字符串,说明在解析json数据时遇到了错误,只要添加适当处理机制,可以大大提高代码的稳固性。如果返回值是数组,这时便可以使用print_r打印出来。
PHP为什么说是最好的编程语言
尝试百度”PHP是最好的语言”,发现指向较多的是那个关于程序员的笑话。 但是如果这个梗来自于这个笑话的话,那么为什么在笑话里这个程序员不说C++/python/haskell或者别的什么语言是最好的而要说PHP是最好的呢?所以感觉似乎最早的出处不在于此。 有人知道吗?来看看知乎网友们是怎么看待这场语言之争的吧!网友回答网友A「为什么在笑话里这个程序员不说 C++ / Python / Haskell 或者别的什么语言是最好的而要说 PHP是最好的呢?」——因为说任何其他语言「最好」都并不好笑啊。任何掌握超过两种以上非 PHP 编程语言且具有一定常识的程序员都会本能地意识到 PHP 的问题所在,曾经有一篇汇总性的文章在此: PHP: a fractal of bad design / fuzzy notepad (译文版可见:五大受损, 全面解析PHP的糟糕设计,但翻译得很烂),历陈 PHP 破败之处,激荡深远。如果你没时间去读那篇长文,那我告诉你一个简单的例子来说明 PHP 有多匪夷所思:PHP 的核心函数命名很不一致,有 「strptime」这样类 C 函数的名字,有「nl2br」这样的简写,却也有「htmlspecialchars」这样的长名。后来人们发现这种不一致并非偶然,而是当 PHP 还是只有不到一百个函数的小语言的时候,其作者决定用函数名的字符数量——来作为函数的 hash(!)。由于这个愚不可及的决定,PHP 的函数名长度要尽可能地长短有秩、均匀分布,影响一直延续至今。甚至有好事者将上述文中:You pull out the hammer, but to your dismay, it has the claw part on both sides.这一句严肃对待,做了一把 PHP 锤子:试想你走进五金从业者公会的啤酒馆,看到墙上挂着从钉子到电动螺丝刀的各式工具当作陈列品,而你在端详一阵之后指着其中的这样一把锤子,说「啊,这是最好的工具」,你觉得酒馆里的人会是什么反应呢?网友B因为php和最好的语言几乎没有关系。。一般用来讽刺一些没见过世面,把自己归属于某一种编程语言的语言教徒。事实上每一门语言都有其设计的灵魂,有它的取舍。很难说什么是最好的。比起做个脑残粉总是鼓吹自己擅长的语言,不如多学几门语言,开阔视野。我们都喜欢分享自己的价值观。希望被认可,希望有更多同伴。其实这也是在给身边的人洗脑,这很正常。但有时候自己在某一领域的付出会成为枷锁。网友CWindows 是最好的操作系统!以上为纯吐槽。我看楼上还有很多还在讨论PHP不是最好的语言,还好我不是程序员,只是稍微懂一点代码,我认为之所以说这个梗,是因为PHP最普及和最流行,大多数不管懂不懂程序都知道或听说过,所以才能引起共鸣。这就是我上面那句吐槽的含义。如果上面那句吐槽改为:Ubuntu 是最好的操作系统!(围观群众:What?)网友D难道不是这么来的?某女:你能让这个论坛的人都吵起来,我今晚就跟你走.某软件工程师:PHP是最好的语言!某论坛炸锅了,各种吵架…某女:服了你了,我们走吧 你想干啥都行.某软件工程师:今天不行,我一定要说服他们,PHP必须是最好的语言某女:…….网友E编程语言之争由来已久,但是php和java确实是最受争议的。自从web2.0热起来后,java逐渐淡出了。究其原因并不在于语言本身,而在于用语言的人。因为php确实简单,门槛最低,所以很多并不适合编程的人涌了进来,仅仅为了糊口罢了。这些人的各种无敌言论自然让很多专业的人呲之以鼻。天龙八部里有个星宿派,虽然在施毒方面有些特长,但门下弟子总的来说武艺平平,其实江湖武功低微的人多的是,低调便是了,谁又老是盯着你呢?然而这个新宿派却偏偏跑出去招摇过市,胡吹本门派武功盖世,大有傲视天下之势,那么其他门派的人会怎么看他们呢?php就是语言江湖的星宿派。网友F对我来说PHP 就是最好的语言。它不是炫耀技巧、扯蛋概念的东西。完成任务才是程序员要做的事。没什么语言可以高效开发同时高效运行。相关利益:写PHP17年。网友G作为一个十多年老phper,看到这句话,也会笑。虽然我也会c c++ java go ,并都做有相应产品。 世界上一半以上的网站是php, bat, fb,处处有它。但这些大公司在近些年,都在试图改造它。淘宝去php改java,百度重写扩展,fb搞xhp等等。但结局是搞了这么些,这几大公司却收效甚微。比之前的性能提升不了太多。在我理解看来,无非是想提高一下b格而已。在php的初始阶段,php是连框架也没有的。直到今天,php创始人lerdorf仍然反对mvc,因为他觉得影响了性能。在那个年代,同样的一个应用,做java的待遇比php高一倍。因为php简单。如果跟你说一个人花了一个星期用php写了个论坛,跑得也还蛮好,你一点也不要惊讶,后来这个论坛还卖给了阿里。面向过程的php,成就了无数小的站点。后来是一个框架辈出的阶段,phper们终于也有了跟java一样的mvc,待遇也慢慢接近于java了。大家明白了一件事,大项目,得有点高深的学术内涵才能忽悠的住。opp也更加规范了,你能找到的设计模式,php全都有,于是phper放言:你还敢说php不高级, 不入流? 而实际上,设计模式,真正能用到的就那么一两个。对于解析性语言,我只能,呵呵。归结一下,php,我觉得更像屌丝逆袭。 然后,笑的人有两种,一种是屌丝的自嘲,另一种是高富帅的妒忌。网友H先说一下php的优点:跟py相比,它不需要django之类的库,原生就支持web。小白们不需要配置什么东西,门槛就低了。而且php的语法是类C的,函数命名大部分也是类C的,大部分码农在学校或多或少都学过C/C++,接触php肯定要比py顺手。跟java相比,支持php的主机显然更多。云主机兴起之前,是个虚拟主机都是lamp,都支持php。而虚拟主机是最便宜的解决方案,也就是说随便租个虚拟主机就能跑php的网站,成本就低了。我个人认为没有什么最好的语言,只有最合适的语言。php之所以在web2.0的时代异军突起,击败了py,原因跟php坑不坑没有关系,跟契机有关系,跟他在那个环境下合不合适有关系。把php的流行归功于什么最好的语言简直是胡扯,也是没动脑子。网友H大部分敢于说自己是最好的语言的语言,至少有一部分人是真这么认为的。比如说C语言最好的,最差最差也有一部分C语言核心开发者有信心这么说。但是PHP语言是一个连开发者都不敢『声称是最好的语言』的语言。这是不言自明的公设,不需要证明。小圈子有个笑话。会不会用PHP是有一个明确判断标准的:只有觉得PHP是个烂语言,才有资格说「我会PHP」。如果你连PHP有多烂都感觉不出来,请别说「我会PHP」「我会编程」。网友J因为php算不上一种语言。就好像说“射钉器是世界上最好的武器”一样。
tp框架,数据库有一个字段为json数据,现已用json_decode转成对象数组了,如何输出数组里边的值
你好,提问者:
解决日期取年月日两种办法:
一种是在sql查询数据库的时候就把日期的格式转换好;
1
DATE_FORMAT(start_time,'%Y-%m-%d') starttime
一种方法是在你获取数据的时候转换
1
SimpleDateFormat sdm = new java.text.SimpleDateFormat("yyyy-MM-dd");
你这样吧,数据取出来后,用StringBuilder 拼一个json 传到前台去吧!
给你个例子:
1
2
3
4
5
6
7
8
9
StringBuilder jsonStrAll = new StringBuilder("["); //定义一个StringBuilder
for(employee c : list){//循环你的list
jsonStrAll.append("{"+ "\""+"catid"+"\""+":"+"\""+c.getCatid()+"\""+","+"\""+"catname"+"\""+":"+"\""+c.getCatname()+",isLeaf:true,expanded:false,"+"loaded:true},"); //把你要拼接的字段放进去
}
String str = jsonStrAll.substring(0, jsonStrAll.length()-1); //把最后的,(逗号)截取掉
if(!"".equals(str)){
str = str+"]"; //加上结尾,json就拼接完了
}
//最后return str ; 就可以了!
猫和老鼠json+decode+error是什么意思?
荣耀50pro采用的是Type-C接口来连接耳机,可以使用Type-C的转接线搭配3.5mm耳机使用.
直接连接Type-C接口的数字音频耳机进行使用. 本文以荣耀50pro为例适用于Magic UI 4.2系统 以上就是智能家小编给大家带来的“荣耀50pro怎么插耳机”的全部内容,了解更多智能资讯尽在智能家
现在市面上已经有越来越多的手机都不支持3.5mm的耳机孔了,那么荣耀最新发布的荣耀50pro是支持3.5mm的耳机孔还是type c接口呢,跟小编一起来看一看吧!
有关华为P50Pro的消息越来越多,那么这款华为P50Pro有耳机孔么,在哪里插耳机孔呢 ,想知道的朋友快跟着小编来看看吧。
最佳答案 耳机的位置就是在 机身的底部 ,右侧依次为充电口和扬声器。荣耀50是荣耀旗下的智能手机设备,作为荣耀全新一代数字系列产品,荣耀50延续了荣耀数字系列的美学基...
[ 图文 ] 2019年12月6日- Pro没有提供一般的3.5mm耳机接口,而是采用Type-C接口连接,和充电器采用的是一个接口,如果耳机是3.5mm接口可以通过转接头,将Type-C接口转换...
2020年11月11日- 5手机正面采用6.39英寸的水滴屏设计,并且取消了3.5mm的独立耳机孔设计,取而代之的是标准的Type-C耳机接口,与充电USB接口是同一个。
json PHP 解析,如何用PHP解析这种json?
发现PHP要求JSON格式正确,比Javascript都严格。"开关\/按钮" , 对象尾部的多余逗号属于JSON语法错误。更正后PHP可读=5.2.0$text=<<<JT{ "result": 2, "data": { "cat_name": "电子元器件市场", "cat_leaf_name": "开关\/按钮" }}JT;$json=json_decode($text, TRUE);echo 'result:'.$json['result'].'
cat_name:'.$json['data']['cat_name'].'
';var_dump($json);result:2cat_name:电子元器件市场array (size=2) 'result' => int 2 'data' => array (size=2) 'cat_name' => string '电子元器件市场' (length=21) 'cat_leaf_name' => string '开关/按钮' (length=13)
php如何解析这种JSON
目前,JSON已经成为最流行的数据交换格式之一,各大网站的API几乎都支持它。
从5.2版本开始,PHP原生提供json_encode()和json_decode()函数,前者用于编码,后者用于解码。
一、json_encode()
该函数主要用来将数组和对象,转换为json格式。先看一个数组转换的例子:
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echo json_encode($arr);
结果为
{"a":1,"b":2,"c":3,"d":4,"e":5}
由于json只接受utf-8编码的字符,所以json_encode()的参数必须是utf-8编码,否则会得到空字符或者null。当中文使用GB2312编码,或者外文使用ISO-8859-1编码的时候,这一点要特别注意。
二、索引数组和关联数组
PHP支持两种数组,一种是只保存"值"(value)的索引数组(indexed array),另一种是保存"名值对"(name/value)的关联数组(associative array)。
由于javascript不支持关联数组,所以json_encode()只将索引数组(indexed array)转为数组格式,而将关联数组(associative array)转为对象格式。
比如,现在有一个索引数组
$arr = Array('one', 'two', 'three');
echo json_encode($arr);
结果为:
["one","two","three"]
三、类(class)的转换
下面是一个PHP的类: class Foo { const ERROR_CODE = '404'; public $public_ex = 'this is public'; private $private_ex = 'this is private!'; protected $protected_ex = 'this should be protected'; public function getErrorCode() { return self::ERROR_CODE; } }
现在,对这个类的实例进行json转换:
$foo = new Foo;
$foo_json = json_encode($foo);
echo $foo_json;
输出结果是
{"public_ex":"this is public"}
可以看到,除了公开变量(public),其他东西(常量、私有变量、方法等等)都遗失了。
上一篇:place to try
下一篇:没有了