Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.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数据解析代码名1_Java_Json_Codenameone - Fatal编程技术网

Java Json数据解析代码名1

Java Json数据解析代码名1,java,json,codenameone,Java,Json,Codenameone,我从我的symfony web应用程序获得Json响应 [ { "Id": 15, "trackingcode": "LVREF45771", "Datecreation": { "date": "2015-01-01 00:00:00.000000", "timezone_type": 3, "timezone": "Europe\/Berlin" }, "Status": "Delivered", "Livreur": { "image": "d81aa404f6afd393ebf6e00b

我从我的symfony web应用程序获得Json响应

[
{
"Id": 15,
"trackingcode": "LVREF45771",
"Datecreation": {
"date": "2015-01-01 00:00:00.000000",
"timezone_type": 3,
"timezone": "Europe\/Berlin"
},
"Status": "Delivered",
"Livreur": {
"image": "d81aa404f6afd393ebf6e00bf87d4107.jpeg",
"idlivreur": 1,
"nom": "Aramex",
"prenom": "Aramex",
"adresse": "Aramex Adresse",
"numtel": 96250615,
"active": null,
"commandes": []
}
},
{
"Id": 16,
"trackingcode": null,
"Datecreation": {
"date": "2015-01-01 00:00:00.000000",
"timezone_type": 3,
"timezone": "Europe\/Berlin"
},
"Status": "Not delivered",
"Livreur": {
"image": "62d44c60a0ded39190552a7677a59bb3.jpeg",
"idlivreur": 2,
"nom": "FedEx",
"prenom": "Livraison",
"adresse": "FedEx adresse",
"numtel": 96250615,
"active": null,
"commandes": []
}
}
]
我目前正在使用CodeNameOne开发一个移动应用程序。我已成功解析了一些数据,如“Id”“trackingcode”

我的问题是我没有找到访问“Livreur”字段的正确方法(image、idLivreur…)

这是我的解析代码

JSONParser j = new JSONParser();
            Map<String, Object> tasksListJson = j.parseJSON(new CharArrayReader(jsonText.toCharArray()));

            List<Map<String, Object>> list = (List<Map<String, Object>>) tasksListJson.get("root");

            for (Map<String, Object> obj : list) {
                Livraison livraison = new Livraison();
                float id = Float.parseFloat(obj.get("Id").toString());
                livraison.setIdLivraison((int) id);
                if (obj.get("trackingcode") == null) {
                    livraison.setTrackingCode("NO TRACKING CODE");

                } else {
                    livraison.setTrackingCode(obj.get("trackingcode").toString());
                }

                livraison.setStatus(obj.get("Status").toString());
JSONParser j=newjsonparser();
Map tasksListJson=j.parseJSON(新的CharArrayReader(jsonText.toCharArray());
List=(List)tasksListJson.get(“根”);
用于(地图对象:列表){
Livraison Livraison=新的Livraison();
float id=float.parseFloat(obj.get(“id”).toString());
setIdLivraison((int)id);
if(obj.get(“trackingcode”)==null){
setTrackingCode(“无跟踪代码”);
}否则{
setTrackingCode(obj.get(“trackingcode”).toString());
}
setStatus(obj.get(“Status”).toString();

您应该能够这样访问

if (obj.get("Livreur") == null) {
      Map<String, Object> data = (Map<String, Object>) obj.get("Livreur");
     // now access inner fields like this.

     data.get("image");
} 
现在改变你的读者部分

ObjectMapper mapper = new ObjectMapper();
List<WhateverNameYouWant> list = mapper.readValue(payload, new TypeReference<List<WhateverNameYouWant>>(){});
您可以使用以下命令忽略不需要的字段

@JsonIgnoreProperties(ignoreUnknown = true)
class WhateverNameYouWant { }

// similarly on other classes

我希望这能有所帮助。

您应该能够这样访问

if (obj.get("Livreur") == null) {
      Map<String, Object> data = (Map<String, Object>) obj.get("Livreur");
     // now access inner fields like this.

     data.get("image");
} 
现在改变你的读者部分

ObjectMapper mapper = new ObjectMapper();
List<WhateverNameYouWant> list = mapper.readValue(payload, new TypeReference<List<WhateverNameYouWant>>(){});
您可以使用以下命令忽略不需要的字段

@JsonIgnoreProperties(ignoreUnknown = true)
class WhateverNameYouWant { }

// similarly on other classes

我希望这能有所帮助。

您获得了99%的成功:

for (Map<String, Object> obj : list) {
    // ...
    Map<String, Object> livreur = obj.get("Livreur");
    String livreurImage = (String)liverur.get("image");
    // ...
}
for(地图对象:列表){
// ...
Map livreur=obj.get(“livreur”);
String livreurImage=(String)liverur.get(“图像”);
// ...
}

您获得了99%的成功:

for (Map<String, Object> obj : list) {
    // ...
    Map<String, Object> livreur = obj.get("Livreur");
    String livreurImage = (String)liverur.get("image");
    // ...
}
for(地图对象:列表){
// ...
Map livreur=obj.get(“livreur”);
String livreurImage=(String)liverur.get(“图像”);
// ...
}

JSONParserlibrary是哪个?com.codename1.io.JSONParserwhich
JSONParser
library是哪个?com.codename1.io.JSONParserI在我的例子中WhatEverNameYouWant类被称为Livraison之前已经尝试过了,当我试图将元素存储在一个列表中时,我得到了一个强制转换异常,正如你提到的异常:java.lang、 ClassCastException-java.util.LinkedHashMap不能转换为Entites。Livraison java.lang.ClassCastException:java.util.LinkedHashMap不能转换为Entites.Livraiss在这种情况下我应该使用jackson吗?我已经通过在LinkedHashMap LinkedHashMap lhm=(LinkedHashMap)obj.get(“Livreur”)中存储“Livreur”部分解决了这个问题;为了访问元素,我使用了经典的get方法livreur.setadrese((String)lhm.get(“adrese”));我知道这看起来可能不是一个好的解决方案,但它确实起到了作用。我已经检查了您的更新答案,这似乎是一个更实用的方法和更好的解决方案,我一定会尝试,谢谢!在我的案例中的WhatEverNameYouWant类被称为Livraison之前,我已经尝试过了,在尝试存储e时,我得到了一个铸造异常您提到的列表中的元素异常:java.lang.ClassCastException-java.util.LinkedHashMap不能转换为Entites。Livraison java.lang.ClassCastException:java.util.LinkedHashMap不能转换为Entites。Livraison在这种情况下我应该使用jackson吗?我已经通过存储“Livreur”解决了这个问题在LinkedHashMap LinkedHashMap lhm=(LinkedHashMap)obj.get(“Livreur”);访问元素时,我使用了经典的get方法Livreur.setadrese((String)lhm.get(“adrese”));我知道这看起来可能不是一个好的解决方案,但它确实起到了作用。我检查了您的最新答案,这似乎是一个更实用的方法和更好的解决方案,我一定会尝试,谢谢!