文字列をJSON形式に変換する方法

919 views
Skip to first unread message

Raiquo

unread,
Jul 21, 2011, 5:50:43 AM7/21/11
to 日本Androidの会
下記URLにてフィード一覧を取得アプリを作成しようとしたのですが、

https://ajax.googleapis.com/ajax/services/feed/find?v=1.0&q=KEYWORD

KEYWORDの部分が例えば、アンドロイダーとした場合変なものが検索されてしまいます。
KEYWORDの部分はJSON形式でないとだめなようで、
どうアンドロイダーという文字列をJSON形式に変換するのかわかりません。

JSONObjectを使用するのかとは思うのですが、
どうしようしてよいのかわからず調べている最中です。
もしどなたかお判りになる方がいらっしゃいましたら、
教えてください。
できれば、使用したサンプルプログラムでもあれば幸いです。

よろしくお願いいたします。

yoshiyuki kanno

unread,
Jul 21, 2011, 9:11:24 AM7/21/11
to android-g...@googlegroups.com
菅野です。

結論からいうと、KEYWORDの部分には以下のように
UTF-8でエンコードされた文字列を、さらにURLエンコードしたものを渡す必要があります。

https://ajax.googleapis.com/ajax/services/feed/find?v=1.0&q=%E3%82%A2%E3%83%B3%E3%83%89%E3%83%AD%E3%82%A4%E3%83%80%E3%83%BC

↑をブラウザのURL入力欄に張れば期待する結果が得られると思います。

※JSONは、このHTTPリクエストに対するサーバのレスポンス形式として使用されています。

まずは、HTTPプロトコルと文字エンコーディングについて理解を深めた方が良いと思います。

2011年7月21日18:50 Raiquo <alter...@gmail.com>:

> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>
>

nayutanoutyu

unread,
Jul 24, 2011, 10:33:36 AM7/24/11
to android-g...@googlegroups.com
KEYWORD は、JSON とは何ら関係がありません。
普通の文字列になります。

JSON形式に変換するべき対象は、検索結果です。

JSON形式のテキストファイルを解析するサンプルコードはインターネット上にたくさんあると思いますが、
せっかくなのでサンプルを添付します。詳細はそれを確認して下さい。

このコードでは API に渡す文字列を UTF-8 エンコードする処理を get() 内のどっかのクラスで勝手にや
ってるみたいです。(どこのクラスやっているか知りません。)

なぜか google のフィード検索 API の返す検索結果には、"\u003cb" の様な余計な文字列が付加されて
いるので、サンプルのように取り除くコードが必要になります。

参考になれば、幸いです。

2011年7月21日18:50 Raiquo <alter...@gmail.com>:

FindRssDemo.java

nayutanoutyu

unread,
Jul 24, 2011, 10:36:12 AM7/24/11
to android-g...@googlegroups.com
文章が変でした。以下の通り訂正します。


> JSON形式に変換するべき対象は、検索結果です。


JSON形式で解析するべき対象は、検索結果です。

2011年7月24日23:33 nayutanoutyu <nayuta...@users.sourceforge.jp>:

駄猫

unread,
Jul 24, 2011, 11:16:59 PM7/24/11
to 日本Androidの会
駄猫です。

一点だけ気になりましたので。


> > なぜか google のフィード検索 API の返す検索結果には、"\u003cb" の様な余計な文字列が付加されて
> > いるので、サンプルのように取り除くコードが必要になります。

これはきちんとした文字列で、ゴミではありません。
受け取り側で解釈する必要があります。

ascii2nativeでググれば回答がでてきます。

サンプルソースとしても下記のように出てくるかと
http://www.java2s.com/Code/Java/Development-Class/ASCII2NATIVE.htm


具体的には
https://ajax.googleapis.com/ajax/services/feed/find?v=1.0&q=アンドロイダー
の返却結果は以下のようになると思います。


{"responseData": {"query":"アンドロイダー",
"entries":[{"url":"http://androider.jp/?feed\u003drss2",
"title":"Android(アンドロイド)のおすすめアプリを毎日紹介!国内最大の人力 \u003cb\u003e...\u003c/b
\u003e",

ascii2native 後

{"responseData": {"query":"アンドロイダー",
"entries":[{"url":"http://androider.jp/?feed=rss2",
"title":"Android(アンドロイド)のおすすめアプリを毎日紹介!国内最大の人力 <b>...</b>",


以上です。

Yusuke Nomoto

unread,
Jul 25, 2011, 1:05:54 AM7/25/11
to android-g...@googlegroups.com
言い方が気になったので、反応しました。

<b>...</b> はゴミじゃないですか?何のために B タグが必要
になるのでしょうか?

ascii2nativeでググならくても、アスキーコードと説明すれば
簡潔ではないですか?

2011年7月25日12:16 駄猫 <3a3k...@gmail.com>:

> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>
>

--
Best regards
nayutanoutyu

駄猫

unread,
Jul 25, 2011, 3:35:34 AM7/25/11
to 日本Androidの会
駄猫です。

まず当方の言葉遣い等でご不快な思いをさせてしまいましたこと、
深くお詫び申し上げます。

<b>タグが不要との事ですが、これに関しては確かにその通りだと思います。
検索結果の強調や前後の省略ありという意味なのでしょうが、質問者様の目的としては
不必要だと思います。
ただ "\u003cb" の様なと書かれていたので、条件反射でアスキー関連をザクっと
処理するのかと思い込んでおりました。(b の部分まで読んでおりませんでした。)

また添付されていたソースを読めば、<b> </b> <b>... の3パターンの除去であると
分かります。申し訳ございません。


その思い込んだ流れでフィード一覧の取得ということで、\u003d(=)等の変換は必要だと思いましたが、
もしかしたら不要なのでしょうか。
当然のように変換するのが癖になっておりますので、間違っておりましたらご教示願います。

その他、ご質問者様が別のサービス等からjsonデータを取得された場合に、
アスキーからの変換が当然のように必要となるようなものもあるかと思われます。
→中には日本語が全てアスキーで返ってくるものもあるかと…。


このようなことから、アスキーからの変換は必須であると考え投稿しましたが、
ご指摘のようにアスキーコードと記載すれば良かった内容と思われます。

当方の指摘方法が簡潔でなかった事、またご不快な思いをさせてしまいましたこと
改めてお詫び申し上げますと共に、投稿の際により皆様に配慮出来るよう注意していきたいと思います。

その他お気づきの点等ございましたら、ご指導ご鞭撻の程よろしくお願い致します。

以上です。



On 7月25日, 午後2:05, Yusuke Nomoto <yusuke.nom...@gmail.com> wrote:
> 言い方が気になったので、反応しました。
>
> <b>...</b> はゴミじゃないですか?何のために B タグが必要
> になるのでしょうか?
>
> ascii2nativeでググならくても、アスキーコードと説明すれば
> 簡潔ではないですか?
>
> 2011年7月25日12:16 駄猫 <3a3k....@gmail.com>:

Raiquo

unread,
Jul 26, 2011, 7:29:33 AM7/26/11
to 日本Androidの会

Yusuke Nomoto様
nayutanoutyu様
駄猫様

色々とやり方ありがとうござました。
教えていただいたことを調べてみましてまたわからないときは投稿させていただきますので、
その時はよろしくお願いいたします。
> > nayutanoutyu- 引用テキストを表示しない -
>
> - 引用テキストを表示 -
Reply all
Reply to author
Forward
0 new messages