Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用改进的JSON解析_Java_Json_Parsing_Retrofit - Fatal编程技术网

Java 使用改进的JSON解析

Java 使用改进的JSON解析,java,json,parsing,retrofit,Java,Json,Parsing,Retrofit,我有一个示例JSON文件,我想用改型在Java中解析它。我对改型还不熟悉,对Java也有点陌生。我在网络上看到的例子并非如此 我现在清楚了。有人能解释一下我如何使用改装从以下JSON结构中提取movie_徽标字段吗 "url":"sample_url", "movies_metadata": { "movies": { "Movie 1": { "Description":"Sample description for

我有一个示例JSON文件,我想用改型在Java中解析它。我对改型还不熟悉,对Java也有点陌生。我在网络上看到的例子并非如此 我现在清楚了。有人能解释一下我如何使用改装从以下JSON结构中提取movie_徽标字段吗

  "url":"sample_url",
  "movies_metadata":
  {
    "movies":
    {
       "Movie 1":
        {
          "Description":"Sample description for Movie 1",
           "Movie_Logo":"logo1.png"
        },
        "Movie 2":
        {
           "Description":"Sample description for Movie 2",
           "Movie_Logo":"logo1.png"
        },
       "Movie 3":
        {
           "Description":"Sample description for Movie 3",
           "Movie_Logo":"logo1.png"
        }
      }
   }

改型并没有真正用于将JSON解析为Java对象(在内部它实际上用于解析API响应)。我建议使用或解析JSON文件。最简单的方法是使用JSON.org解析器:

import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClientBuilder;
import org.json.JSONArray;
import org.json.JSONObject;
import org.junit.Test;

@Slf4j
public class JsonTest {
    @Test
    public void test() throws Exception {
        HttpClient client = HttpClientBuilder.create().build();
        HttpGet request = new HttpGet("http://jsonblob.com/api/jsonBlob/5384f843e4b0441b35d1329d");
        request.addHeader("accept", "application/json");
        HttpResponse response = client.execute(request);
        String json = IOUtils.toString(response.getEntity().getContent());

        //here's where you're actually parsing the JSON
        JSONObject object = new JSONObject(json);
        JSONObject metadata = object.getJSONObject("movies_metadata");
        JSONObject movies = metadata.getJSONObject("movies");
        JSONArray movieNames = movies.names();
        for (int i = 1; i< movieNames.length(); i++) {
            String movieKey = movieNames.getString(i);
            log.info("The current object's key is {}", movieKey);
            JSONObject movie = movies.getJSONObject(movieKey);
            log.info("The Description is {}", movie.getString("Description"));
            log.info("The Movie_Logo is {}", movie.getString("Movie_Logo"));
        }
    }
}

如果您对GSON感兴趣,我可以提供一些样品。参见
14:49:30.450 [main] INFO  JsonTest - The current object's key is Movie 2
14:49:30.452 [main] INFO  JsonTest - The Description is Sample description for Movie 2
14:49:30.452 [main] INFO  JsonTest - The Movie_Logo is logo1.png
14:49:30.452 [main] INFO  JsonTest - The current object's key is Movie 1
14:49:30.453 [main] INFO  JsonTest - The Description is Sample description for Movie 1
14:49:30.453 [main] INFO  JsonTest - The Movie_Logo is logo1.png