【问题标题】:How to Parse json array without any key value using objectMapper?如何使用objectMapper解析没有任何键值的json数组?
【发布时间】:2015-09-13 14:55:13
【问题描述】:

我得到这样的 json 响应字符串。

 [
   "assets\/imgs\/choicelogos\/choice-logo.jpg",
   "assets\/imgs\/choicelogos\/family-health-logo.jpg",
   "assets\/imgs\/choicelogos\/four-corners-logo.jpg",
   "assets\/imgs\/choicelogos\/grady-logo.jpg",
   "assets\/imgs\/choicelogos\/hands-logo.jpg",
   "assets\/imgs\/choicelogos\/morehouse-logo.jpg",
   "assets\/imgs\/choicelogos\/smc-logo.jpg"
]

这是我使用ObjectMapper 类解析此字符串的方法。

public String parseResponse(String strResponseString) { 
        if (MBUtil.isEmpty(strResponseString)) {
            return "";
        }

        String errMsg = "";

        try {

            ObjectMapper objectMapper = new ObjectMapper();
            objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
            objectMapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true);

            if (!objectMapper.canDeserialize(objectMapper.constructType(WebAPIResponse.class))) {
                return getAppContext().getString(R.string.msg_error_in_reading_format);
            }

            TypeFactory typeFactory = objectMapper.getTypeFactory();
            List<WebAPIResponse> someClassList = objectMapper.readValue(strResponseString, typeFactory.constructCollectionType(List.class, WebAPIResponse.class));

        } catch (Exception e) {
            Log.e(CLASS_TAG, e.getMessage());
            errMsg = e.getMessage();
        }
        return errMsg;
    } 

但我无法解析。它正在抛出errorMsg = null。请任何人帮助我需要改变什么?

【问题讨论】:

  • 它不是List&lt;WebAPIResponse&gt; 它可以是List&lt;String&gt; 或只是String[] ...并且在catch之前使用e.printStackTrace();
  • 即使它不起作用。

标签: android json jsonp


【解决方案1】:

这是这个问题的解决方案。

@JsonIgnoreProperties(ignoreUnknown = true)
    private List<String> mWebAPIResponse;

@Override
    public String parseResponse(String strResponseString) {

        if (MBUtil.isEmpty(strResponseString)) {
            return "";
        }

        String errMsg = "";

        try {

            ObjectMapper objectMapper = new ObjectMapper();
            objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
            objectMapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true);

            if (!objectMapper.canDeserialize(objectMapper.constructType(WebAPIResponse.class))) {
                return getAppContext().getString(R.string.msg_error_in_reading_format);
            }

            List<String> webAPIResponse = objectMapper.readValue(strResponseString, new TypeReference<ArrayList<String>>() {});
            this.mWebAPIResponse = webAPIResponse;

        } catch (Exception e) {
            e.printStackTrace();
            Log.e(CLASS_TAG, e.getMessage());
            errMsg = e.getMessage();
        }
        return errMsg;
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-23
    • 2019-01-29
    • 2018-06-08
    • 1970-01-01
    • 1970-01-01
    • 2021-07-28
    • 1970-01-01
    • 2021-10-24
    相关资源
    最近更新 更多