PHP生成JSON相关的问题

WBOY
Release: 2016-06-06 20:29:07
Original
1135 people have browsed it

关于PHP生成JSON数据的几个问题。

<code>foreach($re as $key=>$value){
    $dd['code'][0]->$key=$value;
    }
$ff = json_encode($dd);
print_r($ff);

// 输出
{"code":[{"0":{"key":"value"},"1":{"key":"value"}}]}</code>
Copy after login
Copy after login

请问要怎么在code前现加一点内容呢?比如:"url":"www.com",使生成的JSON就成这样。

<code>{"url":"www.com", "code":{"0":{"key":"value"},"1":{"key":"value"}}}}</code>
Copy after login
Copy after login

还就是输出的中文全变成了这样\u8f8a\u67e5\u538d,要怎么才能输出成中文呢?

Google了半天都没找到办法,找到的基本全这样的。

<code>$aa = urlencode($dd);
echo urldecode(json_encode($aa));</code>
Copy after login
Copy after login

可是这样不仅不能输出中文,连输出都没有了。。。
var_dump($aa)输出的是NULL,这可怎么办是好啊。。

=============追加=================
那个出现个问题。

<code>{
    "url":"www.com",
    "0":
    {
        "code":
        {
            "0":{"key":"value"},
            "1":{"key":"value"}
        }
    }
}</code>
Copy after login
Copy after login

生成的JSON会变成这样子,请问要怎么把这此数字去掉呢?

=================二追===================

<code>$aa = array("url"=>"www.com");
json_encode(array($aa,$dd['code']), JSON_UNESCAPED_UNICODE);</code>
Copy after login
Copy after login

这样能可以实现想要的,可是有个问题。
从Mysql导出来的数据时怎么会有一个序号呢?

回复内容:

关于PHP生成JSON数据的几个问题。

<code>foreach($re as $key=>$value){
    $dd['code'][0]->$key=$value;
    }
$ff = json_encode($dd);
print_r($ff);

// 输出
{"code":[{"0":{"key":"value"},"1":{"key":"value"}}]}</code>
Copy after login
Copy after login

请问要怎么在code前现加一点内容呢?比如:"url":"www.com",使生成的JSON就成这样。

<code>{"url":"www.com", "code":{"0":{"key":"value"},"1":{"key":"value"}}}}</code>
Copy after login
Copy after login

还就是输出的中文全变成了这样\u8f8a\u67e5\u538d,要怎么才能输出成中文呢?

Google了半天都没找到办法,找到的基本全这样的。

<code>$aa = urlencode($dd);
echo urldecode(json_encode($aa));</code>
Copy after login
Copy after login

可是这样不仅不能输出中文,连输出都没有了。。。
var_dump($aa)输出的是NULL,这可怎么办是好啊。。

=============追加=================
那个出现个问题。

<code>{
    "url":"www.com",
    "0":
    {
        "code":
        {
            "0":{"key":"value"},
            "1":{"key":"value"}
        }
    }
}</code>
Copy after login
Copy after login

生成的JSON会变成这样子,请问要怎么把这此数字去掉呢?

=================二追===================

<code>$aa = array("url"=>"www.com");
json_encode(array($aa,$dd['code']), JSON_UNESCAPED_UNICODE);</code>
Copy after login
Copy after login

这样能可以实现想要的,可是有个问题。
从Mysql导出来的数据时怎么会有一个序号呢?

你的问题有两个:

1,如何追加内容?

json 和 array 是对应的,就像你给数据追加内容一样:

<code class="php">$url = 'www.com';
$code = array(
    array('key', 'value');
    array('key', 'value');
    array('key', 'value');
);

echo json_encode(array('url'=>$url, 'code'=>$code));</code>
Copy after login

2,如何不乱码?

php5.4 之后 json 新增了一个选项 JSONUNESCAPEDUNICODE:

<code class="php">echo json_encode(array('url'=>$url, 'code'=>$code), JSON_UNESCAPED_UNICODE);</code>
Copy after login

让 json 更懂中文

要在code前加上内容,可以在要转换为json的数组前加上值就可以了吧。-_-

<code class="php">$dd['url'] = 'www.xx.com';</code>
Copy after login

PHP版本始于5.4后可用JSON_UNESCAPED_UNICODE参数常量来将字符不转换为unicode码,具体参考手册。

<code class="php">$ff = json_encode($dd, JSON_UNESCAPED_UNICODE); </code>
Copy after login

如果PHP版本小于5.4,可参考如下方法:

<code class="php">function json_encode_utf8($value) {
    $jsons = json_encode($value);
    return preg_replace(
        "#\\\u([0-9a-f]{4}+)#ie",
        "iconv('UCS-2', 'UTF-8', pack('H4', '\\1'))",
        $jsons
    );
}</code>
Copy after login

\u8f8a\u67e5\u538d 本身就是中文啊, 这个是交给前端处理的。

PHP生成JSON相关的问题

问题1:

<code>$dd['url'] = 'www.com';
$dd['code'] = array();</code>
Copy after login

问题2:
见1楼,那个是js中推荐的汉字使用方式,与文件编码无关。js中直接使用

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!