プログラマメモ2 - programmer no memo2

スプリングでjsonを返したい。 2011/05/05


SpringMVCでjson返してjqueryでごにょごにょできないかなとさがしてるところです。

上記のサイトで紹介されてたjackson使う方法がとても簡単なようです。

@RequestMapping(value = "/test", method = RequestMethod.GET)
public MappingJacksonJsonView test(@RequestParam("id") String id) {
Map map = new HashMap();
map.put("id", id);
MappingJacksonJsonView view = new MappingJacksonJsonView();
view.setAttributesMap(map);
return view;
}

AJAX Search API をYAJLで使ってみます。 2010/06/07


アプリ経由でgoogleさんの検索結果が欲しいなと思いました。
JSONで取得することにして、簡単だー、と思っていたら、Objective-CでどうJSONって扱うのだろうというところでとまどいました。


こちらの記事を読んでYAJLを使ってみることに決定。

使用しているライブラリは、

ここまではいいのですが、Objctive-Cをよく理解できていない僕は、悩むわけでした。

なんとか、必要な情報をとるためのコードをこさえました。
参考

yajl-objcをとりこんだあとは、
これを忘れずに、
#import "YAJL.h"


Objective-Cってなかなか柔軟であることに気がつきました。
(いまさらですが...)

YAJLDocumentベースで作成してます。

コード
NSString *urlString = @"http://ajax.googleapis.com/ajax/services/search/web?q=%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%83%A1%E3%83%A22&v=1.0&rsz=large&hl=ja";

NSURL *url = [NSURL URLWithString:urlString];
NSData *data = [NSData dataWithContentsOfURL:url];

NSError *error = nil;
YAJLDocument *document = [[YAJLDocument alloc] initWithData:data parserOptions:YAJLDecoderCurrentTypeDict error:&error];

NSLog(@"Root: %@", document.root);
NSLog(@"==================================");
NSLog(@"responseStatus==>[%@]", [document.root objectForKey:@"responseStatus"]);// ステータス200ならOK
id cursor = [[document.root objectForKey:@"responseData"] objectForKey:@"cursor"];// カーソル
{
NSLog(@"型を調べてみると==>[%@]", [cursor class]);
for (id o in cursor) {
NSLog(@" 型==>%@", [o class]);
}
}
id results = [[document.root objectForKey:@"responseData"] objectForKey:@"results"];// 検索結果

NSLog(@"型を調べてみると==>[%@]", [results class]);
for (id o in results ) {
NSLog(@" 型==>%@", [o class]);
NSLog(@" %@", [o objectForKey:@"cacheUrl"]);
NSLog(@" %@", [o objectForKey:@"content"]);
NSLog(@" %@", [o objectForKey:@"titleNoFormatting"]);
NSLog(@" %@", [o objectForKey:@"url"]);
}
[document release];


あとは型でチェックするコードを追加すればまあまあいけるかな。どうでしょうか。

json to java 2007/11/24

jsonのデータを気軽にjavaで扱える方法を模索中です。

【ハウツー】LL時代のデータ形式 - JavaプログラマのためのYAML/JSON (5) JavaでYAML/JSONを利用する - JSON-lib | エンタープライズ | マイコミジャーナル

という記事を読んで、なるほどと思う。

Maven - Json-lib::Welcome

ちょっと依存するlibが多そうなので、もっと簡単なのないかな。

It is based on the work by Douglas Crockford in http://www.json.org/java.

というふうにあったので、JSON in Javaにいってみる。

むきだしのjavaコードがあったので、ひとつづつダウンロードしてみた。

依存するものがないようなので、ちょっと試してみた。



jsonデータ

{
arr:[
{
name:"o_o!",
val:"Ohh"
},
{
name:"o_o2!",
val:"Eeeehh"
}
]
}


で適当に読み込むコード


import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.Scanner;

public class JSONtoJava {

public static void main(String[] args) throws UnsupportedEncodingException,
JSONException {
InputStream stream = JSONtoJava.class
.getResourceAsStream("../data2.js");
BufferedReader reader = new BufferedReader(new InputStreamReader(
stream, "utf-8"));

Scanner scanner = new Scanner(reader);
StringBuilder builder = new StringBuilder();
while (scanner.hasNextLine()) {
builder.append(scanner.nextLine());
}

JSONTokener tokener = new JSONTokener(new String(builder));
JSONObject object = new JSONObject(tokener);

JSONObject object2 = (JSONObject) object.getJSONArray("arr").get(0);
System.out.println(object2.get("val"));

}

}


ファイルから一気に読み込むコードが思いつかなかったので、scannerでぐるぐると。
ファイルの読み込みなんて、ユーティリティクラスつくっていつも動かしていたから、こういった基本コードの書き方忘れるOrz...

えーと、JSONTokenerを作成して、JSONObjectに渡してあげればOK

firefoxとsafariのjson 2007/11/18
2007/11/20

えーと
firefoxでオッケーでsafariでだめなケースがあったのでメモ。

jsonで、配列の後ろが無いのにカンマをおくとsafariだとだめだった。





で別のパターン
macのosx、safariではオッケーだったけど、winのieではだめだった※特にバージョンは気にしてないです。



意識しないといけないですね。
言語仕様的にはOKなのかな?

[javascript]jsonがRFCになった。 2006/08/08
2008/01/28

jsonがRFCになっていた。

XMLでデータ交換って面倒くさいなぁと思っていたころ、巷ではAJAXがはやっていて、JSONのことをしったのが、2006年になってからだった。



javaメインで開発していて、ネットワークをjavaのオブジェクトをシリアライズさせてながす方法が便利だなぁと思っていて(RMIではなく)、クライアント(Java)ーサーバ(Java)で開発しているのに、データベースからデータを取得してJavaオブジェクトにしてまた、XMLになおして、そのXMLをねっワークを通して、クライアントでまたXMLからjavaオブジェクトにするのがかったるい。



が、XMLにするとデータの可搬性(といっていいのかな)が高まるのは承知しているのだが、面倒だなと感じていた。



jsonに注目している理由は、データ構造がシンプルであるということ、json自体にjavascriptのコードを埋め込めることができるからだ。



json自体にデータの操作方法記述してそれをクライアントに送り込むという方法。



これから開発してみたいなと考えているのは、jsonでデータを吐き出すサーバを用意して、そのサーバにAJAXで接続するクライアント、JavaWebStart(Rhinoを使う)で接続するクライアントアプリ、Flashで作成されたクライアントアプリとか、で接続するWebアプリ。javascirptの実行環境(インタープリタ)があればなんでもよいのかも。



でも、バイナリデータを乗せるのって無理だろうな。BASE64でエンコードするとかになるのかな。この辺調べてみないといけないな。