json解析解决方案

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

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

PHP code

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

<!--

 

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);

    }

Copier après la connexion


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

你应该在 arrayRecursive 函数里做 iconv('gbk', 'utf-8', $value) 编码转换
------解决方案--------------------
一般要这么写,你自己再封装一下
PHP code

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

$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>

Copier après la connexion
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Explication détaillée de l'utilisation de return en langage C Explication détaillée de l'utilisation de return en langage C Oct 07, 2023 am 10:58 AM

Explication détaillée de l'utilisation de return en langage C

Combinaison de golang WebSocket et JSON : réalisation de la transmission et de l'analyse des données Combinaison de golang WebSocket et JSON : réalisation de la transmission et de l'analyse des données Dec 17, 2023 pm 03:06 PM

Combinaison de golang WebSocket et JSON : réalisation de la transmission et de l'analyse des données

Quelle est la différence entre MySQL5.7 et MySQL8.0 ? Quelle est la différence entre MySQL5.7 et MySQL8.0 ? Feb 19, 2024 am 11:21 AM

Quelle est la différence entre MySQL5.7 et MySQL8.0 ?

Conseils d'optimisation des performances pour la conversion de tableaux PHP en JSON Conseils d'optimisation des performances pour la conversion de tableaux PHP en JSON May 04, 2024 pm 06:15 PM

Conseils d'optimisation des performances pour la conversion de tableaux PHP en JSON

Utilisez la fonction json.MarshalIndent dans Golang pour convertir la structure en une chaîne JSON formatée Utilisez la fonction json.MarshalIndent dans Golang pour convertir la structure en une chaîne JSON formatée Nov 18, 2023 pm 01:59 PM

Utilisez la fonction json.MarshalIndent dans Golang pour convertir la structure en une chaîne JSON formatée

Tutoriel d'utilisation de Pandas : Démarrage rapide pour la lecture de fichiers JSON Tutoriel d'utilisation de Pandas : Démarrage rapide pour la lecture de fichiers JSON Jan 13, 2024 am 10:15 AM

Tutoriel d'utilisation de Pandas : Démarrage rapide pour la lecture de fichiers JSON

Comment gérer les formats de données XML et JSON dans le développement C# Comment gérer les formats de données XML et JSON dans le développement C# Oct 09, 2023 pm 06:15 PM

Comment gérer les formats de données XML et JSON dans le développement C#

Comment les annotations de la bibliothèque Jackson contrôlent-elles la sérialisation et la désérialisation JSON ? Comment les annotations de la bibliothèque Jackson contrôlent-elles la sérialisation et la désérialisation JSON ? May 06, 2024 pm 10:09 PM

Comment les annotations de la bibliothèque Jackson contrôlent-elles la sérialisation et la désérialisation JSON ?

See all articles