首頁 後端開發 php教程 json解析解决方案

json解析解决方案

Jun 13, 2016 pm 01:35 PM
array function json quot return

json解析
问一个问题啊 我已经解决json_encode 不能传中文的问题 在gbk编码的情况下 但是我怎么用json_decode()函数解析不出来啊

PHP code
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
function arrayRecursive(&amp;$array, $function, $apply_to_keys_also = false)
{
    static $recursive_counter = 0;
    if (++$recursive_counter &gt; 1000) {
        die('possible deep recursion attack');
    }
    foreach ($array as $key =&gt; $value) {
        if (is_array($value)) {
            arrayRecursive($array[$key], $function, $apply_to_keys_also);
        } else {
            $array[$key] = $function($value);
        }
 
        if ($apply_to_keys_also &amp;&amp; is_string($key)) {
            $new_key = $function($key);
            if ($new_key != $key) {
                $array[$new_key] = $array[$key];
                unset($array[$key]);
            }
        }
    }
    $recursive_counter--;
}
 
/**************************************************************
 *
 *    将数组转换为JSON字符串(兼容中文)
 *    @param    array    $array        要转换的数组
 *    @return string        转换得到的json字符串
 *    @access public
 *
 *************************************************************/
function JSON($array) {
    arrayRecursive($array, 'urlencode', true);
    $json = json_encode($array);
    $json = urldecode($json);
    $json = str_replace("\"false\"","false",$json);
        $json = str_replace("\"true\"","true",$json);
        return $json;
    
}

function get_goodbook() {
       $sql = "select * from `wiki_doc`";
       $data=$this-&gt;db-&gt;getAll($sql);    
       return JSON($data);
    }


登入後複製


------解决方案--------------------
json_encode 可以传中文啊,传之前iconv就是了伐.
------解决方案--------------------
你把内容作了 url 编码,对方(比如js)拿到后如何知道需要解码呀?

你应该在 arrayRecursive 函数里做 iconv('gbk', 'utf-8', $value) 编码转换
------解决方案--------------------
一般要这么写,你自己再封装一下
PHP code
$ar = array (
  '这里是 GBK 编码的数据',
  array(
    '这是一个测试',
    '这还是一个测试',
  ),
);

echo $s = json_encode( array_map('gb2utf',$ar));
print_r(array_map('utf2gb', json_decode($s)));


function gb2utf($v) {
  if(! is_array($v)) return iconv('gbk', 'utf-8', $v);
  foreach($v as &amp;$t) $t = gb2utf($t);
  return $v; 
}

function utf2gb($v) {
  if(! is_array($v)) return iconv('utf-8', 'gbk', $v);
  foreach($v as &amp;$t) $t = utf2gb($t);
  return $v; 
}
<br><font color="#e78608">------解决方案--------------------</font><br>首先将数组转成utf-8的就可以编码中文了,没必要去写很多其它代码 <div class="clear">
                 
              
              
        
            </div>
登入後複製
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

C語言return的用法詳解 C語言return的用法詳解 Oct 07, 2023 am 10:58 AM

C語言return的用法詳解

golang WebSocket與JSON的結合:實現資料傳輸與解析 golang WebSocket與JSON的結合:實現資料傳輸與解析 Dec 17, 2023 pm 03:06 PM

golang WebSocket與JSON的結合:實現資料傳輸與解析

MySQL5.7和MySQL8.0的差別是什麼? MySQL5.7和MySQL8.0的差別是什麼? Feb 19, 2024 am 11:21 AM

MySQL5.7和MySQL8.0的差別是什麼?

PHP 數組轉 JSON 的效能最佳化技巧 PHP 數組轉 JSON 的效能最佳化技巧 May 04, 2024 pm 06:15 PM

PHP 數組轉 JSON 的效能最佳化技巧

Pandas使用教學:讀取JSON檔案的快速入門 Pandas使用教學:讀取JSON檔案的快速入門 Jan 13, 2024 am 10:15 AM

Pandas使用教學:讀取JSON檔案的快速入門

C#開發中如何處理XML和JSON資料格式 C#開發中如何處理XML和JSON資料格式 Oct 09, 2023 pm 06:15 PM

C#開發中如何處理XML和JSON資料格式

使用golang中的json.MarshalIndent函數將結構體轉換為格式化的JSON字串 使用golang中的json.MarshalIndent函數將結構體轉換為格式化的JSON字串 Nov 18, 2023 pm 01:59 PM

使用golang中的json.MarshalIndent函數將結構體轉換為格式化的JSON字串

Jackson庫中註解如何控制JSON序列化和反序列化? Jackson庫中註解如何控制JSON序列化和反序列化? May 06, 2024 pm 10:09 PM

Jackson庫中註解如何控制JSON序列化和反序列化?

See all articles