Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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_Rest_Jax Rs - Fatal编程技术网

Java 从JSON文档中检索三个元素

Java 从JSON文档中检索三个元素,java,json,rest,jax-rs,Java,Json,Rest,Jax Rs,我在一个项目中工作,从URL检索JSON后,我需要操作JSON文件。我从以下链接检索了我的JSON文件: 该JSON文件包含法国特定服务站的信息,例如: 车站服务详情(steet、名称、标记…) 服务(洗涤、厕所……) 最重要的是!最近的燃料价格 为此,我尝试按照其他用户在stackoverflow给出的解决方案来解决类似的问题。你可以看到: 以下是我的代码(完整方法): @GET @路径(“/DecouvrirJSONInfo/{stationServiceInfo}”) publicst

我在一个项目中工作,从URL检索JSON后,我需要操作JSON文件。我从以下链接检索了我的JSON文件:

该JSON文件包含法国特定服务站的信息,例如:

  • 车站服务详情(steet、名称、标记…)
  • 服务(洗涤、厕所……)
  • 最重要的是!最近的燃料价格
  • 为此,我尝试按照其他用户在stackoverflow给出的解决方案来解决类似的问题。你可以看到:

    以下是我的代码(完整方法):

    @GET
    @路径(“/DecouvrirJSONInfo/{stationServiceInfo}”)
    publicstationservice DecouvrirJSON(@PathParam(“stationServiceInfo”)字符串jsonString)抛出JSONException
    {
    JSONObject myResponse=新的JSONObject(jsonString);
    字符串名称;
    串式化油器Gazole,化油器SP95,化油器SP98,化油器GPL;
    浮动普瑞昔布仑唑、普瑞昔布仑TSP95、普瑞昔布仑P98、普瑞昔布仑GPL;
    日期:DTACTGAZOL、dtActSP98、dtActSP95、dtActGPL;
    StationService actuelStationService=新的StationService();
    渗碳剂渗碳剂=新的渗碳剂();
    列表化油器=新ArrayList();
    尝试
    {
    //nom=myResponse.getString(“nom”);
    迭代器keysRoot=myResponse.keys();
    while(keysRoot.hasNext())
    {
    字符串rootKey=keysRoot.next();
    if(rootKey==“属性”)
    {
    JSONObject innerZeroJObject=myResponse.getJSONObject(rootKey);
    迭代器键=innerZeroJObject.keys();
    while(keys.hasNext())
    {
    String key=keys.next();
    //Log.v(“**********”,“**********”);
    //Log.v(“类别键”,键);
    如果(键==“化油器”)
    {
    JSONObject innerJObject=myResponse.getJSONObject(键);
    迭代器innerKeys=innerJObject.keys();
    while(innerKeys.hasNext())
    {
    字符串innerKkey=keys.next();
    if(innerKkey==“1”)//gazole
    {
    JSONObject innerIIJObject=myResponse.getJSONObject(innerKkey);
    迭代器innerIKeys=innerIIJObject.keys();
    while(innerIKeys.hasNext())
    {
    cArcantGazole=innerIIJObject.getString(“化油器”);
    dtActGazole=新的简化格式(“yyyy-MM-dd-HH:MM:ss.ssss”)
    .parse(innerIIJObject.getString(“maj”);
    prixcarburatgazole=Float.parseFloat(innerIIJObject.getString(“prix”));
    化油器。定义化油器(化油器喷嘴);
    化油剂。定义为普瑞克百隆(普瑞克百隆唑);
    增碳剂。添加(增碳剂);
    渗碳剂=新的渗碳剂();
    }
    }
    else if(innerKkey==“2”)//Sp95
    {
    JSONObject innerIIJObject=myResponse.getJSONObject(innerKkey);
    迭代器innerIKeys=innerIIJObject.keys();
    while(innerIKeys.hasNext())
    {
    化油器SP95=innerIIJObject.getString(“化油器”);
    dtActSP95=新的简化格式(“yyyy-MM-dd-HH:MM:ss.SSSS”)
    .parse(innerIIJObject.getString(“maj”);
    prixCarburantSP95=Float.parseFloat(innerIIJObject.getString(“prix”));
    化油器.定义化油器(化油器SP95);
    化油剂.定义的PRIXCARBURANT(prixCarburantSP95);
    增碳剂。添加(增碳剂);
    渗碳剂=新的渗碳剂();
    }
    }
    else if(innerKkey==“3”)//SP98
    {
    JSONObject innerIIJObject=myResponse.getJSONObject(innerKkey);
    迭代器innerIKeys=innerIIJObject.keys();
    while(innerIKeys.hasNext())
    {
    化油器SP98=innerIIJObject.getString(“化油器”);
    dtActSP98=新的简化格式(“yyyy-MM-dd-HH:MM:ss.SSSS”)
    .parse(innerIIJObject.getString(“maj”);
    prixSP98=Float.parseFloat(innerIIJObject.getString(“prix”));
    化油器.定义化油器(化油器SP98);
    化油剂.定义的PrixCarburant(prixSP98);
    增碳剂。添加(增碳剂);
    渗碳剂=新的渗碳剂();
    }
    }
    //字符串值=innerJObject.getString(innerKkey);
    //Log.v(“key=“+key”,value=“+value”);
    
     @GET
        @Path("/DecouvrirJSONInfo/{stationServiceInfo}")
        public StationService DecouvrirJSON(@PathParam ("stationServiceInfo") String jsonString) throws JSONException
        {
    
            JSONObject myResponse = new JSONObject(jsonString);
            String nom; 
            String carburantGazole, carburantSP95, carburantSP98, carburantGPL;
            float prixCarburantGazole, prixCarburantSP95, prixSP98, prixGPL; 
            Date dtActGazole, dtActSP98, dtActSP95,dtActGPL;
            StationService actuelStationService = new StationService();
            Carburant carburant = new Carburant();
            List<Carburant> carburants = new ArrayList<Carburant>();
    
    
            try
            {
                //nom = myResponse.getString("nom");
                Iterator<String> keysRoot = myResponse.keys();
                while (keysRoot.hasNext())
                {
    
    
                    String rootKey = keysRoot.next();
                    if(rootKey == "properties")
                    {
                        JSONObject innerZeroJObject = myResponse.getJSONObject(rootKey);
                        Iterator<String> keys = innerZeroJObject.keys();
                        while( keys.hasNext() )
                        {
    
                            String key = keys.next();
                            //Log.v("**********", "**********");
                            //Log.v("category key", key);
    
                            if(key=="carburant")
                            {
                                JSONObject innerJObject = myResponse.getJSONObject(key);
                                Iterator<String> innerKeys = innerJObject.keys();
                                while( innerKeys.hasNext() )
                                {
                                    String innerKkey = keys.next();
                                    if(innerKkey == "1") // gazole
                                    {
                                        JSONObject innerIIJObject = myResponse.getJSONObject(innerKkey);
                                        Iterator<String> innerIKeys = innerIIJObject.keys();
                                        while( innerIKeys.hasNext() )
                                        {
    
                                            carburantGazole = innerIIJObject.getString("carburant");
                                            dtActGazole = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS")
                                                        .parse(innerIIJObject.getString("maj"));
                                            prixCarburantGazole = Float.parseFloat( innerIIJObject.getString("prix"));
                                            carburant.DefinirNomCarburant(carburantGazole);
                                            carburant.DefinirPrixCarburant(prixCarburantGazole);
                                            carburants.add(carburant);
                                            carburant = new Carburant();
                                        }
    
                                    }
                                    else if(innerKkey == "2") // Sp95
                                    {
                                        JSONObject innerIIJObject = myResponse.getJSONObject(innerKkey);
                                        Iterator<String> innerIKeys = innerIIJObject.keys();
                                        while( innerIKeys.hasNext() )
                                        {
                                            carburantSP95 = innerIIJObject.getString("carburant");
                                            dtActSP95 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS")
                                                        .parse(innerIIJObject.getString("maj"));
                                            prixCarburantSP95 = Float.parseFloat( innerIIJObject.getString("prix"));
                                            carburant.DefinirNomCarburant(carburantSP95);
                                            carburant.DefinirPrixCarburant(prixCarburantSP95);
                                            carburants.add(carburant);
                                            carburant = new Carburant();
    
                                        }
    
                                    }
                                    else if(innerKkey == "3") // SP98
                                    {
                                        JSONObject innerIIJObject = myResponse.getJSONObject(innerKkey);
                                        Iterator<String> innerIKeys = innerIIJObject.keys();
                                        while( innerIKeys.hasNext() )
                                        {
                                            carburantSP98 = innerIIJObject.getString("carburant");
                                            dtActSP98 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS")
                                                        .parse(innerIIJObject.getString("maj"));
                                            prixSP98 = Float.parseFloat( innerIIJObject.getString("prix"));
                                            carburant.DefinirNomCarburant(carburantSP98);
                                            carburant.DefinirPrixCarburant(prixSP98);
                                            carburants.add(carburant);
                                            carburant = new Carburant();    
                                        }
    
                                    }
                                    //String value = innerJObject.getString(innerKkey);
                                    //Log.v("key = "+key, "value = "+value);
                                }
                            }
    
                        }
                    }
    
    
                }
    
               //actuelStationService.DefinirNomStationService(nom);
               actuelStationService.DefinirCarburants(carburants);
    
    
            }
            catch(Exception ex)
            {
    
            }
    
            return actuelStationService;
        }
    
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.URL;
    import java.net.URLConnection;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
    import java.util.Map;
    
    import com.jayway.jsonpath.Configuration;
    import com.jayway.jsonpath.JsonPath;
    
    public class SearchJson {
    
        public static void main(String[] args) throws Exception {
    
            URL url = new URL("http://api.openeventdatabase.org/event/b2e7df60-3f25-4d80-b7ac-cffc10dd5313");
            URLConnection connection = url.openConnection();
            String jsonString = toString(new InputStreamReader(connection.getInputStream()));
    
            Object document = Configuration.defaultConfiguration().jsonProvider().parse(jsonString);
    
            Integer nbDesCarburants = (Integer) JsonPath.read(document, "$.properties.carburants.length()");
    
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            List<Carburant> carburants = new ArrayList<>();
            for (int i = 0; i < nbDesCarburants; i++) {
                Map<String, Object> carburantMap = (Map<String, Object>) JsonPath.read(document,
                        "$.properties.carburants[" + i + "]");
                String nom = (String) carburantMap.get("carburant");
                Date maj = simpleDateFormat.parse(carburantMap.get("maj").toString());
                float prix = Float.parseFloat(carburantMap.get("prix").toString());
                Carburant carburant = new Carburant(nom, maj, prix);
                carburants.add(carburant);
            }
    
    
            for (Carburant carburant : carburants) {
                System.out.println(carburant);
            }
    
        }
    
        static class Carburant {
            private final String nom;
            private final Date date;
            private final float prix;
            public Carburant(String nom, Date date, float prix) {
                super();
                this.nom = nom;
                this.date = date;
                this.prix = prix;
            }
            @Override
            public String toString() {
                return "Carburant [nom=" + nom + ", date=" + date + ", prix=" + prix + "]";
            }
    
        }
    
        public static String toString(InputStreamReader reader) throws IOException {
            char[] charBuf = new char[1024];
            int read = reader.read(charBuf, 0, 1024);
            StringBuilder sb = new StringBuilder();
            while (read != -1) {
                sb.append(new String(charBuf));
                charBuf = new char[1024];
                read = reader.read(charBuf, 0, 1024);
            }
            sb.append(new String(charBuf));
            return sb.toString();
        }
    
    }
    
    <dependency>
        <groupId>com.jayway.jsonpath</groupId>
        <artifactId>json-path</artifactId>
        <version>2.3.0</version>
    </dependency>