Java初学者使用以下代码将嵌套对象的JSON数组解析为简化的JSON数组。
如果对象中没有空值,则可以正常工作。空值检查似乎有故障。在此之前,我也尝试过其他方法,如==null
或equals(null)
或equals("null")
或!=null
或!="null"
或=="null"
。
import com.google.gson.*;
public class DataParser {
public static JsonArray parseData(JsonArray data) throws JsonParseException {
JsonArray dataArray = new JsonArray();
for (Object dataObj : data) {
JsonParser parser = new JsonParser();
JsonObject obj = (JsonObject) parser.parse(dataObj.toString());
JsonObject finalDataObj = new JsonObject();
Object fields = obj.get("fields");
JsonObject fieldsObj = (JsonObject) parser.parse(fields.toString());
finalDataObj.add("key", obj.get("key"));
finalIssueObj.addProperty("cityName", displayName(fieldsObj.get("cityName")));
finalIssueObj.addProperty("category", displayName(fieldsObj.get("category")));
dataArray.add(finalDataObj);
}
return dataArray;
}
public static String displayName(Object dataValue){
if ( dataValue == null){
return "";
}
else {
JsonObject obj = (JsonObject)dataValue;
return obj.get("name").toString();
}
}
}
输入:
[{"key":"1232", "fields": {cityName":{"id":"10000","description":"This is city name","iconUrl":"https://iconurls.com","name":"Hyderabad","subtask":false},"updated":"2023-05-31","category":{"description":"This is category of city.","iconUrl":"https://category1.icon.com","name":"Dining"}}},
{"key":"1233", "fields": {cityName":null,"updated":"2023-05-31","category":null}}]
输出:
[{"key" : "1232", "cityName": "Hyderabad", "category" : "Dining"},
{"key" : "1233", "cityName": "", "category" : ""} ]`
1条答案
按热度按时间mfpqipee1#
在提供的代码中,您尝试使用dataValue == null检查空值。但是,对于JSON对象,使用==检查null不会像预期的那样工作。相反,您可以使用Gson库提供的JsonNull类来检查空值。
此外,parseData方法中的dataObj的类型为JsonElement而不是Object,以避免不必要的转换。