本文目录一览:
- 1、fastjson 怎样把字符串转换成json
- 2、java 怎么将string转为json数据
- 3、java怎么把字符串转成json对象
- 4、String字符串转为json对象时顺序如何保持不变。
- 5、FastJson和Json以及@ResponseBody
- 6、json.parseobject()的set方法设置顺序
fastjson 怎样把字符串转换成json
// jackson
private static ObjectMapper om = new ObjectMapper ();
public static String objectToString (Object obj ) throws IOException{
return om.writeValueAsString (obj );
}
@Test
public void test1 () throws IOException {
MapString, Object map = new HashMapString, Object();
MapString, String map2 = new HashMapString, String此圆();
map2.put ("name", "1");
map2.put ("age"改键, "12");
map.put ("att", map2 );
ListString list = new ArrayListString();
list.add ("hi");list.add ("hello");
map.put ("list", list );
ListMapString, String confuselist = new ArrayListMapString, String();
MapString, String map3 = new HashMapString, String();
map3.put ("name", "1");
map3.put ("age", "12");
confuselist.add (map3 );
confuselist.add (map2 );
map.put ("confuselist", confuselist );
Object array = Array.newInstance (String.class, 10 );
Array.set (array, 0, "a");
Array.set (array, 1, "b");
Array.set (array, 2, "c");
map.put ("array", array );
// 使用 jackson
System.out.println (objectToString (map ));
// 使用核扒巧 fastJson
System.out.println (JSON.toJSONString (map ));
}
输出:
{"att":{"age":"12","name":"1"},"list":["hi","hello"],"confuselist":[{"age":"12","name":"1"}, {"age":"12","name":"1"}],"array":["a","b","c",null,null,null,null,null,null,null]}
{"att":{"age":"12","name":"1"},"list":["hi","hello"],"confuselist":[{"age":"12","name":"1"},{"$ref":"$.att"}],"array":["a","b","c",null,null,null,null,null,null,null]}
[img]java 怎么将string转为json数据
string转json有三种方法:
第一种:string直接转json
String json = "{\"2\":\"efg\",\"1\":\"abc\"}"; JSONObject json_test =
JSONObject.fromObject(json); 将string的双引号转义即可,适用于字符串较短的
第二种:将string转为list后转为json
Listlist = new ArrayList(); list.add("username");
list.add("age"); list.add("sex"); JSONArray array = new JSONArray();
array.add(list);
可以使用list的族神add函数将需要的字符串拼接即可,但是这个只能使用jsonarry
第三种:将string转为map后转为json
Mapmap = new HashMap();
map.put("1", "abc");
map.put("2", "efg");
JSONArray array_test = new JSONArray();
array_test.add(map);
JSONObject jsonObject = JSONObject.fromObject(map);
这里使用map就可以将字符串转化为JSONArray或者念滚JSONObject都可以,但仔穗余是这里的键不能使用int型
java怎么把字符串转成json对象
下面以ali的fastjson为例,讲解json字桐斗符串转消尺json对象拿轮高:String jsonStr = "{\"message\" : \"success\"}";JSONObject jsonObject = JSON.parseObject(jsonStr);String message = jsonObject.getString("message");System.out.println(message);
String字符串转为json对象时顺序如何保持不变。
你好!
需要引入fastjson这个jar包,而且版本要高于1.2.3,因为Feature.OrderedField是从1.2.3开始引入的。
import java.util.HashMap;
import java.util.LinkedHashMap;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.parser.Feature;
public class Test {
public static void main(String[] args) {
运配亮 JSONObject json = new JSONObject();
String jsonStr = "{\"t1\":\"\",\"t3\":\"\",\"t2\":{\"a1\":\"\",\"a3\":\"\",\"a2\"卖早:\"\"}}";
HashMap m= json.parseObject(jsonStr,LinkedHashMap.class,Feature.OrderedField);
System.out.println(m.toString());
}
}
结果:
{t1=, t3=, t2={"a1":"","a3":"","a2":""}}
希望对你有帮助旁宽!
FastJson和Json以及@ResponseBody
@Restcontroller是@Controller和@ResponseBody的结合体,将后台返回的Java对象转换为Json字符串传递给前台。它是springmvc通过配置MappingJackson2HttpMessageConverter实现的,spring默认带的转json包为jackson,因为fastJson比较快一般会引入fastjson来替换。
解决bean与json字段不一致问题,或者字段定义不符合前端所需岩租要的标准,需要使用@JsonProperty和@JSONField注解粗橡兆。
@jsonProperty是Jackson的包,@JSONproperty这个注解用于属性上面
而@jsonfield是如链fastjson的包,@JSONField这个注解可以用于get、set以及属性上面@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")是时间的格式化,可以用于get、set以及属性上面
FastJson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。FastJson的API十分简洁,FastJson重要的类为JSONObject,经常调用的方法如下:
public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray
public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject
public static final T parseObject(String text, Class clazz); // 把JSON文本parse为JavaBean
public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray
public static final List parseArray(String text, Class clazz); //把JSON文本parse成JavaBean集合
public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本
public static final Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray。
Jackson相对来说比较高效的Json类库,在项目中主要使用Jackson进行JSON和Java对象转换,Jackson ObjectMapper类是使用Jackson解析JSON最简单的方法。可以从字符串、流或文件解析JSON,并创建Java对象或对象图来表示已解析的JSON。将JSON解析为Java对象也称为从JSON反序列化Java对象
1.JAVA对象转JSON
ObjectMapper mapper = new ObjectMapper();
String bjectMapper = mapper.writeValueAsString(obj);
2.JSON转Java类[JSON反序列化]
ObjectMapper mapper = new ObjectMapper();
HashMapString, Object inMap = mapper.readValue(jsonStr, HashMap.class);
json.parseobject()的set方法设置顺序
在开发过程中遇到一个问题:服务器经过排序返回厅袜后的字符串数据在使用fastjson解析后,数据顺序发生了变化,这个问题也就是:使用fastjson解析数据后导致顺序改变或者说是如何保持String字符串转为json对象时扮尺激顺序不变
解决方法:
方法一:解析时增加参数不调整顺序(亲测使用有效)
JSONObject respondeBodyJson = JSONObject.parseObject(str, Feature.OrderedField);
方困闭法二:配置有序对象
JSONObject.parseObject(str,LinkedHashMap.class,Feature.OrderedField);
方法三:初始化json对象为有序对象
JSONObject retObj = new JSONObject(true);
方法四:使用Gson解析
JsonObject returnData = new JsonParser().parse(str).getAsJsonObject();
这样生成的json对象就与放入数据时保持一致了
注意:引入的fastjson相关的jar包版本要高于1.2.3,因为Feature.OrderedField是从1.2.3开始的