0

ドキュメント内のIDまたは名前を取得してJavaで変更できるように、次のjson文字列をJava配列リストに変換したいと考えています。

{
 response{
  docs[
   {id:#
    name:#
   }
  ]
 }
}
4

3 に答える 3

1

多くのHTTPクライアントライブラリがありますが、JSONを取り込む場合、最善の策は、Jerseyクライアントライブラリを使用することです。JSONに一致するJavaオブジェクト(この場合、オブジェクトの配列などでResponseあるフィールドを含むオブジェクト)を作成し、結果としてこれを期待するようにJerseyクライアントに指示する必要があります。そうすれば、Javaオブジェクトを操作して、任意の形式で出力できるようになります。DocsData

*更新

コードの基本的な概要。まず、Jerseyクライアントを設定します。

import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.config.DefaultClientConfig;
import com.sun.jersey.api.client.WebResource;

....


final ClientConfig clientConfig = new DefaultClientConfig();
clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);
final Client client = Client.create(clientConfig);

次に、リクエストを作成します。

final WebResource webResource = client.resource("http://mydomain.com/myresource");

この段階で、JSONをとして取得したい場合は、次のStringように呼び出すことができます。

final String json = webResource.get(String.class);

ただし、他のHTTPクライアントよりもJerseyを使用することの本当の利点は、JSONを解析するため、JSONについて考える必要がないことです。次のクラスを作成する場合:

public class DataResponse
{
  private final List<DataDoc> docs;

  @JsonCreator
  public DataResponse(@JsonProperty("docs")List<DataDocs> docs)
  {
    this.docs = docs;
  }

  public List<DataDoc> getDocs()
  {
    return this.docs;
  }
}

public class DataDoc
{
  final String id;
  final String name;
  // Other fields go here

  @JsonCreator
  public DataDoc(@JsonProperty("id") String id,
                 @JsonProperty("name") String name)
  {
    this.id = id;
    this.name = name;
  }

  // Getters go here
}

次に、Jerseyクライアントコードを次のように変更できます。

final DataResponse response = webResource.get(DataResponse.class);

これで、通常のJavaオブジェクトのように応答してフィールドにアクセスできます。

于 2013-02-07T15:57:22.127 に答える
1
URL url = new URL("webAddress");

URLConnection conn = url.openConnection();

BufferedReader reader = new BufferedReader(new InputStreamReader(
                conn.getInputStream()));

 String line = "";
 ArrayList<String> list = new ArrayList<String>();
 while ((line = reader.readLine()) != null) {
      list.add(line);

  //Perform operation on your data.It will read a line at a time.

}
于 2013-02-07T15:58:47.363 に答える
0

実際にHTTPGETを実行したいので、このディスカッションを見てください。JavaでHTTP GETを実行するにはどうすればよいですか?

于 2013-02-07T15:56:41.037 に答える