今天主要是學習JSONObject(import com.alibaba.fastjson.JSONObject)這個工具類里面的方法有哪些:
第一個方法:將對象轉換成字符串:
JSONObject.toJSONString(Object obj);
具體實現有:
public static String toJSONString(Object object) {
return toJSONString(object, emptyFilters);
}
而toJSONString方法如:
public static String toJSONString(Object object, SerializeFilter[] filters, SerializerFeature... features) {
return toJSONString(object, SerializeConfig.globalInstance, filters, null, DEFAULT_GENERATE_FEATURE, features);
}
接着toJSONString方法實現如:
public static String toJSONString(Object object, // SerializeConfig config, // SerializeFilter[] filters, // String dateFormat, // int defaultFeatures, // SerializerFeature... features) { SerializeWriter out = new SerializeWriter(null, defaultFeatures, features); try { JSONSerializer serializer = new JSONSerializer(out, config); if (dateFormat != null && dateFormat.length() != 0) { serializer.setDateFormat(dateFormat); serializer.config(SerializerFeature.WriteDateUseDateFormat, true); } if (filters != null) { for (SerializeFilter filter : filters) { serializer.addFilter(filter); } } serializer.write(object); return out.toString(); } finally { out.close(); } }
-----------------------------------------
第二個:將字符串轉換成對象:
JSONObject jsonObject = JSONObject.parseObject(result);
具體實現代碼如:
public static JSONObject parseObject(String text) { Object obj = parse(text); if (obj instanceof JSONObject) { return (JSONObject) obj; } try { return (JSONObject) JSON.toJSON(obj); } catch (RuntimeException e) { throw new JSONException("can not cast to JSONObject.", e); } }
第三個,根據KEY獲取到值:
JSONObject objResult = jsonObject.getJSONArray("data").getJSONObject(0).getJSONObject("result");
getJSONArray方法實現代碼如:
public JSONArray getJSONArray(String key) { Object value = map.get(key); if (value instanceof JSONArray) { return (JSONArray) value; } if (value instanceof String) { return (JSONArray) JSON.parse((String) value); } return (JSONArray) toJSON(value); }
第四個方法根據索引獲取到第一個對象:getJSONObject(int index),實現代碼如:
public JSONObject getJSONObject(int index) { Object value = list.get(index); if (value instanceof JSONObject) { return (JSONObject) value; } return (JSONObject) toJSON(value); }
第五個方法根據字符串也就是key查詢到對應key的值:
public JSONObject getJSONObject(String key) { Object value = map.get(key); if (value instanceof JSONObject) { return (JSONObject) value; } if (value instanceof String) { return JSON.parseObject((String) value); } return (JSONObject) toJSON(value); }
=====================================================================================
第一步:業務需求是:使用@JSONField注解轉換一個對象的屬性名變成另一個名字傳遞給其他接口作為入參的方式:
首先定義一個對象類FundRevealInputModel為:
public class FundRevealInputModel implements Serializable{ /** * 序列號 */ private static final long serialVersionUID = 1L; @JSONField(name = "p_fundcode") private String fundCode; @JSONField(name = "p_year") private String year; @JSONField(name = "p_cycle") private String cycle; }
然后業務邏輯層實現代碼:
FundRevealInputModel inputModel = new FundRevealInputModel(); inputModel.setFundCode(fundCode); inputModel.setYear(year); inputModel.setCycle(cycle); String jsonString = JSONObject.toJSONString(inputModel);
inputModel對象為:
接着使用JSONObject.toJSONString方法講對象轉換成字符串:
經過轉換成字符串傳遞給其他接口成功訪問到數據之后,獲得的結果是字符串,如何將字符串轉化為json對象返回給前端呢?
使用的JSONObject.parseObject這個方法
得到jsonObject結果為:
接着獲取到result的值:
=====================================
public static String toJSONString(Object object, // SerializeConfig config, // SerializeFilter[] filters, // String dateFormat, // int defaultFeatures, // SerializerFeature... features) { SerializeWriter out = new SerializeWriter(null, defaultFeatures, features);
try { JSONSerializer serializer = new JSONSerializer(out, config); if (dateFormat != null && dateFormat.length() != 0) { serializer.setDateFormat(dateFormat); serializer.config(SerializerFeature.WriteDateUseDateFormat, true); }
if (filters != null) { for (SerializeFilter filter : filters) { serializer.addFilter(filter); } }
serializer.write(object);
return out.toString(); } finally { out.close(); } }