2011-06-30 12 views
4

私のiPhoneアプリはPHPサーバからjsonデータを取得しています。"""でPHPサーバからjsonデータを取得

2つの基本的な質問、念のために:

1-でJSONデータフィールドのいくつかは、私が"""を参照してください、これはJSONが引用、 を送信し、私はiphoneアプリでそれをきれいにする必要がどのようにでしょうか?またはこの事をスキップするエレガントでクリーンな方法がありますか?

2 - データはUTF-8です。配列に配列があると、UTF-8は正しい方法で表示されず、表示コードになります。これはJSONライブラリのバグですか?またはサーバー側で確認する必要がありますか?

ありがとうございます。

+0

JSONライブラリまたはPHPの 'json_ *'関数のバグに頼る前に、自分のコードを詳しく見ていきます。 –

+0

iphone側では、github.com/stig/json-frameworkを使用してください。 UTF-8の処理に固有のことを行う必要がありますか?または文字列をパーサに送信するだけですか?私は何をしています:NSString * content = [[NSString alloc] initWithData:self。m_dataToParseエンコーディング:NSUTF8StringEncoding]; SBJsonParser * _parser = [[SBJsonParser alloc] init]; NSDictionary * jsonContentDictionary = [_parser objectWithString:コンテンツ]; – mark100

答えて

0

JSON文字列内のどこでも引用符は\"である必要があります。 """は無効なJSONと構文エラーです。どの「サーバー」がこのJSONテキストを生成していますか? iPhone、またはPHPのjson_encode()?

+0

PHPサーバがjsonを作成しています。 iphoneがデータをダウンロードして解析しています。 配列の配列はどうなりますか?そこのデータは、テキストではなく\ u454 \ u \ 453のようなテキストをこのように表示します。 これはパーサのバグですか?またはサーバー内に何かがありますか? – mark100

+0

PHPでいくつかのデバッグを行い、 'json_encode()'に何が供給されているのか、出てくるものを見てください。私は、関数が生成された出力を生成することは決して見たことがなく、入れ子配列を正しく処理します。しかし、何か他のものがPHPで出力フィルタリングをしている可能性があり、それはmanglingものかもしれません。 –

+0

https://github.com/stig/json-frameworkを使用している – mark100

1

JSONは

"は、HTMLやXMLの実体である引用を送ってどのようにこのです。 JSONの見積もりは"\""

です。アレイに配列がある場合、UTF-8は正しい方法で表示されず、表示コードになります。これはJSONライブラリのバグですか?

エンコーダにバグがある可能性があります。それはデコーダのバグかもしれません。あなたがそのうちのどれを使っているかにバグかもしれません。

入力と出力がどのようになっているかについてわからなくてもわかりません。

+0

iphone側でこのライブラリを使用していることを確認してください: github.com/stig/json-frameworkを使用しています UTF-8の処理には何か特別な処理が必要ですか? か、文字列をパーサに送信するだけですか? 何をしているのですか: NSString * content = [[NSString alloc] initWithData:self.m_dataToParse encoding:NSUTF8StringEncoding]; SBJsonParser * _parser = [[SBJsonParser alloc] init]; NSDictionary * jsonContentDictionary = [_parser objectWithString:content]; – mark100

0

"はHTMLエンティティで、ブラウザでHTMLコードとして解釈される可能性のある文字を表現する方法です。

PHP 5.2/5.3(他の人は話すことができません)はHTMLエンティティに触れないでください。したがって、あなたのjson_encode文字列にhtml_entities(...)が実行されていないことを確認してください。エンコーダにバグが存在するのかどうかは間違いありません。

1

おそらく起こっているのは、見積もりが"にエンコードされており、アンパサンドが"にエンコードされているということです。 JSON/XMLファイルを検索して置き換えるときに、自分自身に数時間かかることがあります。移動して"に戻してください。

あなたはちょうどあなたがページに印刷しているものを中心に

html_entity_decode($json->data); 

を使用し、そのフォーマットを編集することはできません別のAPIやソースからそれらを取得している場合。

+0

私のためのトリックでした – user2387149