2017-03-23 4 views
1

仕様では、APIの回答は単純な文字列値ですが、形式はJSONです。Web API生成アプリケーション/ jsonで単純文字列を返します

私はジャージーを使用しています。

私はそのように私の答えを構築する場合:

return Response.ok().entity("hello").build(); 

それは働いているが、私は答えを見たとき、たとえば、Firefoxののネットワークビューで、JSONの構文エラーがあります。私はそのような文字列にいくつかの二重引用符があった場合 は:

return Response.ok().entity("\"hello\"").build(); 

をFirefoxで何の構文エラーはありませんが、私はそれを行うには良い方法だとは思いません。

JSONを生成するAPIの単純なString値を返す良い方法はありますか?

+0

_私はそれを行うのが良い方法だとは思いません。なぜそれは良い方法ではないのですか? –

+0

apiはいくつかのJSON(application/json)を生成します。 しかし、この呼び出しの仕様は次のとおりです。 オブジェクトの種類: "string" 私は実際に何をしようとしているのか分かりません。私はただの練習があるかどうかを知りたがっています。 – bloub

+0

@Kayaman '" hello "'は有効なJSONですが、 '{" hello "}'は有効なJSONではありません。 –

答えて

2

あなたはJSONを生成するつもりなら、あなたは、例えば、いくつかのオブジェクトまたはコレクションを返すことがあります。YourRest.java

@GET 
@Path("hello/{name}") 
@Produces(MediaType.APPLICATION_JSON) 
public String greeting(@PathParam("name") String name){ 
    Hello hello = new Hello(); 
    hello.setName(name); 
    return Response.ok().entity(hello).build(); 
} 

@GET 
@Path("people") 
@Produces(MediaType.APPLICATION_JSON) 
public ArrayList<String> peopleList(){ 
    List<String> people = new ArrayList<String>(); 
    Hello hello = new Hello(); 
    hello.setName("bloub"); 
    people.add(hello); 
    hello.setName("Aime"); 
    people.add(hello); 
    return Response.ok().entity(people).build(); 
} 

Hello.java

public class Hello{ 
    public String name; 
    // getter setter 
} 

http://localhost:8080/hello/bloubが返されます

{ 
"name" : "bloub" 
} 

http://localhost:8080/people

[ 
    { 
    "name" : "bloub" 
    }, 
    { 
    "name" : "Aime" 
    } 
] 

を返しますが、あなたは単純なテキストを返すようにしたいならば、例えば@Produces(MediaType.TEXT_PLAIN)

を使用します。YourRest.java

@GET 
@Path("hello/{name}") 
@Produces(MediaType.TEXT_PLAIN) 
public String greeting(@PathParam("name") String name){ 
    return Response.ok().entity("Hello, "+name).build(); 
} 

http://localhost:8080/hello/bloub

を返します。
Hello, bloub 

希望します。

関連する問題