2010-07-05 9 views
8
Array 
(
    [sEcho] => 1 
    [iTotalRecords] => 7521 
    [iTotalDisplayRecords] => 1 
    [aaData] => Array 
     (
      [0] => Array 
       (
        [0] => Nordic Capital Buys SiC Processing 
        [1] => 2010-06-21/nordic-capital-buys-sic-processing 
        [2] => PEHub Media 
        [3] => Business 
        [4] => completed 
        [5] => Nordic Capital has acquired a 70% stake in SiC Processing AG, a German industrial recycling company, from Frog Capital. No sale price was disclosed. SiC Processing’s founding family retains a 25% holding, while former lead investor Zouk Ventures retains a 5% stake. 

        [6] => Admin, China, Frog Capital, Germany, Italy, Iyad Omari, Manufacturing, Norway, PEHub Media, Photovoltaic Wafer Manufacturing, Renewable Energy, Semiconductor, United States 
       ) 

     ) 

) 

echo json_encode($myArr); 

{ "sEcho": "1", "iTotalRecords": 7521, "iTotalDisplayRecords": "1", "aaData": [[ » Nordic Capital Achète SiC Processing </a> </div> "" 2010-06-21/nordic-capital-buys-sic-traitement </div> », "PEHub Media", "affaires", "terminée", null, " Admin, Chine, Grenouille capitale, Allemagne, Italie, Iyad Omari, Fabrication, Norvège, PEHub Média, Fabrication de Wafer Photovoltaïque, Energie Renouvelable, Semi-conducteur, Etats-Unis]]}php json_encode retour null

Notez le nul au milieu de la chaîne après terminée

Pourquoi est-ce, ce évasion/manipulation dois-je effectuer pour coder cela?

J'ai essayé, addslashes

+0

Works pour moi. Vérifiez votre configuration PHP, je pense que les trucs json_ * peuvent être désactivés. –

+0

Veuillez fournir le code PHP utilisé pour construire le tableau d'exemple (et s'il vous plaît vérifier vos questions soigneusement lors de la publication - les exemples fournis devraient faire ce que vous les entendez!) – AllenJB

+1

Peut-on obtenir un 'var_export' du tableau source s'il vous plaît? – Charles

Répondre

24

A partir du manuel:

Notez que si vous essayez de coder un tableau contenant des valeurs non-utf, vous obtiendrez des valeurs nulles dans la chaîne résultante JSON. Vous pouvez lot-encoder tous les éléments d'un tableau avec la fonction array_map:

$encodedArray = array_map(utf8_encode, $myArr); 
echo json_encode($encodedArray); 
+0

Merci seengee, parfait. En fait, j'ai utilisé array_map (htmlentities ... pour ma situation, mais cela a sauvé le jour.) –

+0

Il est à noter que suggérer utf8_encode() n'est généralement pas une bonne idée, car il suppose aveuglément que l'entrée est ISO-8859-1. vous êtes confronté au problème, il est important que vous compreniez d'abord quel est votre jeu de caractères * IS *, et seulement alors convertir (http://php.net/iconv peut aider avec la deuxième partie si vous ne traitez pas avec ISO -8859-1). – TML

1

Je viens d'essayer ce même code exact, et il est revenu ce qui suit:

{"var1":"test string","var2":"Nordic Capital has acquired a 70% stake in SiC Processing AG, a German industrial recycling company, from Frog Capital. No sale price was disclosed. SiC Processing\u2019s founding family retains a 25% holding, while former lead investor Zouk Ventures retains a 5% stake.","var3":"test string 3"} 

Quelle version de PHP Courez-vous? Et est-ce de votre localhost ou vous exécutez ceci sur une boîte à distance?

+0

S'il vous plaît vérifier à nouveau ma question j'ai mis à jour avec le code complet, car json_encode travaille avec reste de tableau. – Lizard

+0

Donc, cela ressemble à un problème avec le 5ème élément du tableau. Puis-je voir le code pour la génération du tableau? – xil3

+0

c'est juste un champ d'une base de données – Lizard

1

En fait, il ne retourne pas la valeur null, http://codepad.org/A34KdUf5. Peut-être que votre version de PHP ne supporte pas json_encode().

+0

Veuillez vérifier à nouveau ma question J'ai mis à jour avec le code complet, car json_encode travaille avec le reste du tableau. – Lizard

+1

Lors de la copie et du collage, vous l'avez probablement mis par inadvertance sous forme UTF-8, alors que la chaîne d'origine ne l'était probablement pas. – devios1

1

Fonctionne pour moi le 5.2.13. Assurez-vous que vous utilisez au moins PHP 5.2.0 et que PHP n'a pas été compilé avec --disable-json. Vous pouvez également vérifier que le rapport d'erreurs (et/ou la journalisation) est activé.

+0

S'il vous plaît vérifier ma question à nouveau j'ai mis à jour avec le code complet, car json_encode travaille avec reste de tableau. – Lizard

0

La façon plus simple est $store_name = utf8_encode(name_of_varaible), mais s'il vous plaît assurez-vous que votre jeu de caractères est ISO-8859-1.

Questions connexes