json

使用js进行string和json之间转换的方法

一、string类型转换成Json对象方法

 1、Javascript支持的转换方式:eval

          eval('(' jsonstr ')');

注意:需要在json字符外包裹一对小括号,ie8(兼容模式),ie7和ie6也可以使用eval()将字符串转为JSON对象,但不推荐这些方式;缺点是不安全,eval会执行json串中的表达式。

2、浏览器支持的转换方式(Firefox,chrome,opera,safari,ie9,ie8)等浏览器:

JSON.parse(jsonstr); //可以将json字符串转换成json对象

相反浏览器也提供了将Json对象转换成string类型的方法:

JSON.stringify(jsonstr);//可以将json对象转换成json对符串

3、jQuery插件支持的转换方式

$.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象

4、JSON官方的转换方式

http://www.json.org/提供了一个json.js,这样ie8(兼容模式),ie7和ie6就可以支持JSON对象以及其stringify()和parse()方法;
可以在https://github.com/douglascrockford/JSON-js上获取到这个js,一般现在用json2.js。

二、Json对象转换成String字符串方法

  上面提到的浏览器支持的转换方式JSON.stringify(str):

JSON.stringify(jsonstr);//可以将json对象转换成json对符串

关于 php json API接口开发的注意问题

关于 php json接口开发的注意问题

一是注意跨域问题.需要加 Access-Control-Allow-Origin:*  http头.(针对于前端浏览器脚本调用接口)

二是如果请求的header里  Content-Type: 是 application/json,则需要用 file_get_contents("php://input");接收.如果用 swoole 框架的话,需要用$request->rawContent()接收.

如果请求header里Contente-Type是 multipart/form-data,或application/x-www-form-urlencoded或application/octet-stream
则需要用 $_POST($_GET)或$_FILES来接收.

Ps :js 代码调用接口示例如下

1.要加contentType: "application/json; charset=utf-8",

2.需要使用JSON.stringify 转换json对象或把对象转为字符形式,如'{"aa":22}'(json两边加单引号)

var submit_sync = function() {  
    $.ajax({  
        type: "post",  
        url: 'add-post-json.php',  
        async: false, 
                

PHP处理json的注意点

PHP处理json的注意点:代码说明:

<?php
$json=json_encode($messagebody,JSON_UNESCAPED_UNICODE);//把数据转换成json格式时要加 
 JSON_UNESCAPED_UNICODE参数,不要把中文转换成 unicode 
 $data =file_get_contents('php://input', 'r');
 $data=ltrim($data,"\XEF\XBB\XBF");//去bom
$json=json_decode($data,false,512,JSON_BIGINT_AS_STRING); //解析json时,记得加 
 JSON_BIGINT_AS_STRING参数,把大数字转为字符串,防止传入大的数字而解析不完整。
if (json_last_error() === JSON_ERROR_NONE) { //json格式检查
//没错误可以继续了
 } else {
 //不是一个json格式,记录错误日志
$mmsg=json_last_error_msg(); 
error_log('not a json:'.$mmsg."\n".$data."\n",3,'errorjson.log');
 }

 

        

MySQL5.7之Json Column和Generated Column

MySQL5.7新增两种字段类型:Json和Generated,Generated型的产生和Json的关系密不可分,如果没有Generated类型,Json类型在强大,生产中可能也无法使用,因为Json不支持索引,但是如果要查询Json里的数据,没有索引就是全表扫描,在执行效率上肯定是不能用于生产环境的,但是有了Generated类型就不同了,Generated类型简单地说是一个虚拟字段,值是不可更新的,值来源其他字段或者字段间计算或是转化而来的,这种类型是可以创建索引,利用Generated的特性,就可以间接的给Json类型中的key创建索引,解决Json不能创建索引的问题。简而言之, Generated类型的产生,为Json类型在索引方面的问题提供了支持。JSON的值包含单个值、数组、元组、标注的Json格式等几种格式。…

    

PHP AJAX JSONP实现跨域请求

PHP AJAX JSONP实现跨域请求

代码示例:

js代码

<script>
 $.ajax({
    type : "get",//get方法
    async:false,
    url : "json.php",
    dataType : "jsonp", //类型
    jsonp: "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback) //jsonp回调参数,必需
    jsonpCallback:"success_jsonpCallback",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名(如果一个页面有多个jsonp请求,请在这里起不同的名字)
    success:function(json){
    alert(json);
    alert(json[0].aid);
    },
 error:function(){
    alert('fail');
     }
 });
});
</script>
PHP代码:json.php 

<?php
$callback = $_GET['callback']; //jsonp回调参数,必需
                

简单一招实现json数据可视化

开发一个内部功能时碰到的需求,要把json数据在页面上展示出来,平时浏览器会安装jsonView这样的扩展来看json数据,但是程序要用到的话该怎么办呢?今天在网上搜索的时候,发现了这个小技巧,分享一下。

要用到的核心是JSON.stringify这个函数,没想到吧,平时我们只把它用来序列号json数据。但是这个stringify是有三个参数的,…