内部对象(ArrayList)不转换为JSON字符串?

时间:2019-04-26 11:09:35

标签: java arrays json jackson

我在将嵌套列表对象转换为JSON时遇到问题。我正在使用对象映射器,它仅转换起始值,之后内部只有一个arraylist,并且不会通过该列表。

我已经尝试过使用JsonNode root = mapper.valueToTree(obj)进行一些基本的迭代,以便我可以遍历内部arraylist,但是我没有得到结果。我是这种解析转换的新手。

代码段-

public class JsonUtils {

  public static <T> String toJsonString(final T obj) throws IOException {
    final ObjectMapper mapper = new ObjectMapper();
    String jsonString = null;
    try {
        //JsonNode root = mapper.valueToTree(obj);
        jsonString = mapper.writeValueAsString(obj);
    } catch (final JsonProcessingException e) {
        throw e;
    } catch (IOException e) {
        throw e;
    }
    return jsonString;
  }

  public static <T> String toJsonString(final List<T> lstObject) throws JSONException, IOException {
    final JSONArray jsonArray = new JSONArray();
    for (final T object : lstObject) {
        final String json = JsonUtils.toJsonString(object);
        final JSONObject jsonObj = new JSONObject(json);
        jsonArray.put(jsonObj);
    }
    return jsonArray.toString();
  }
}

这就是我得到的结果-

[2, [{"geoMarketId":1,"geoname":"AP","geoId":1,"checked":false}, 
{"geoMarketId":7,"geoname":"EP","geoId":2,"checked":false},
{"geoMarketId":16,"geoname":"Japan","geoId":3,"checked":true},
{"geoMarketId":18,"geoname":"LA","geoId":4,"checked":true},
{"geoMarketId":22,"geoname":"MEA","geoId":5,"checked":true},
{"geoMarketId":24,"geoname":"NA","geoId":6,"checked":false}]]

应得出的实际结果-

{"geoMarketId":1,"geoname":"AP","geoId":1,"checked":false,
marketName:{"marketname":JP,"marketname":"AP","marketname":MP}}

我的json转换忽略了同一索引中的内部列表。

我的json类是否可以迭代并将该内部列表转换为JSON?

0 个答案:

没有答案