ラベル JSON の投稿を表示しています。 すべての投稿を表示
ラベル JSON の投稿を表示しています。 すべての投稿を表示

2016年4月16日土曜日

d3.jsonを一時的にハードコードしたデータでテストしたい時


こういうAjaxでのリクエストを、

d3.json("/test/this/url", function(json) {
// ToDo: ------> Write something here..
}

こういう感じで変えると、バックエンドがない場合でもテストできる。

var testData = '{test:[1,2,3]}';
var json = JSON.parse( testData );

http://stackoverflow.com/questions/10934853/d3-js-loading-json-without-a-http-get

RESTfulなWEBサービスへのアクセスをLinuxのコンソールからテストする方法は?


curlコマンドを使う。-HオプションでJSON取得を指定して、-Xでメソッド(GET/POST/PUT/UPDATE/DELETE)を指定できる。

curl -i -H "Accept: application/json" -X GET http://abc.def.com/test/this/url


http://stackoverflow.com/questions/21326397/curl-get-request-with-json-parameter

2014年6月3日火曜日

SpringでJSONを返す場合に、特定のフィールドを表示させ無いようにするにはObjectMapperのaddMixInAnnotationsを使う。

SpringでJSONを返す場合に、特定のフィールドを表示させ無いようにするには、JacksonのObjectMapperで、addMixInAnnotationsに表示させたく無いフィールドを設定した抽象クラス、もしくはインターフェイスを大元のJSONオブジェクトにマップしたクラスに教えてやる。

Snippet

@Controller
public class SubjectController

{
    private ObjectMapper _objectMapper = new ObjectMapper();

    public Controller()
    {
    _objectMapper.getSerializationConfig().addMixInAnnotations(Base.class, FieldsNotAvailable.class);

    }

    @RequestMapping(value="/path", method={RequestMethod.GET})
    public @ResponseBody String getJson(ModelMap model)
    {
        return _objectMapper.writeValueAsString(subject);
    }
}

public abstract class FiledsNotAvailable
{
    @JsonIgnore
    public abstract String getSomeField();
}

http://stackoverflow.com/questions/22609079/how-to-filter-the-json-response-returning-from-spring-rest-web-service
http://fasterxml.github.io/jackson-databind/javadoc/2.0.0/com/fasterxml/jackson/databind/ObjectMapper.html#addMixInAnnotations(java.lang.Class, java.lang.Class)

2013年10月25日金曜日

Spring 3.xでJSON型を返す@Controllerのクラスを実装する時に気をつけたい事

Spring 3.xで@Controllerのクラスを実装して、JSON型を返すRESTfulなサービスを作る時に気をつけたい事がある。ここは少しハマった。。。

まず仕様の抜粋から、

Underneath the covers, Spring MVC delegates to a HttpMessageConverter to perform the serialization. In this case, Spring MVC invokes a MappingJacksonHttpMessageConverter built on the Jackson JSON processor. This implementation is enabled automatically when you use the mvc:annotation-driven configuration element with Jackson present in your classpath.

つまり、Spring MVCはJSONの場合、JavaオブジェクトのシリアライズをMappingJacksonHttpMessageConverterに委譲する。その為には、applicationContext.xmlで<mvc:annotation-driven/>を追加しないと委譲が行われない。そして、これはメソッドの戻り値が@ResponseBodyで指定される。

そして、ハマったところ。。。

JSONにマップするクラスがgetter/setterを持っていない場合、HTTP 406のエラーコードが返されてうまくいかない。つまりJavaBeansでなければならないよう。おそらくMessageConverterの仕様でしょうが、ここがブラックボックスで分からない。。(?)

ということで、ここには気をつけましょう。


  1. <mvc:annotation-driven/>
  2. jackson-mapper-asl.jar, jackson-xc.jarが必要
  3. @ResponseBody
  4. JavaBeans(?)パターンの実装 -------> 調査中


http://spring.io/blog/2010/01/25/ajax-simplifications-in-spring-3-0/

2013年10月22日火曜日

jQueryでAjaxを使ってJSONを扱うには

$.ajax({
    url: "someUrl",      // -----------------------> リクエストするURL
    dataType: "json",  // -----------------------> JSONがサーバーから返ってくる事を想定
    success: function(response) {
   // -----------------------> JSONをresponse.person.nameなどのような形で操作する
    }

});