今天主要是学习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");

ruby json转对象 jsonobject 转string_JSON

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对象为:

ruby json转对象 jsonobject 转string_JSON_02

 

 

接着使用JSONObject.toJSONString方法讲对象转换成字符串:

ruby json转对象 jsonobject 转string_字符串_03

 

经过转换成字符串传递给其他接口成功访问到数据之后,获得的结果是字符串,如何将字符串转化为json对象返回给前端呢?

使用的JSONObject.parseObject这个方法

ruby json转对象 jsonobject 转string_JSON_04

 

 

 得到jsonObject结果为:

ruby json转对象 jsonobject 转string_ruby json转对象_05

 

 

 

 接着获取到result的值:

ruby json转对象 jsonobject 转string_ruby json转对象_06

 

 

 =====================================

 

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();        }    }