jsonobject方法,java中,怎么把两个jsonObject合并成一个?
jsonobject方法,java中,怎么把两个jsonObject合并成一个?详细介绍
本文目录一览: java里的JSONObject作用是什么?什么时候用?
JsonObject 就是常说的 json。
是一种重要的数据传输对象。
其格式为{"key1":value1,"key2",value2....};key 必须是字符串。
很像map对不对,一个key,一个value。
因为ajax请求不刷新页面,但配合js可以实现局部刷新,因此json常常被用来作为异步请求的返回对象使用。
通过response.getWriter()获取PrintWriter pw,然后pw.print(json)。
如果没有设置response.setContentType("application/json; charset=utf-8");
则需要自己再js中进行解析。
举例说明:
response.setContentType("application/json; charset=utf-8"); PrintWriter pw = response.getWriter();Student s = new Student(。。。);//反正就是构造一个对象,有没有数据无所谓JSONObjet json = JSONObjet .from(s);//将s转化成json对象。pw .print(json);pw .flush();pw .close();这样这个json对象就传到你发送请求的那个jsp上面。而$.post(url,datas.function(data){})这里的data就是后台返回的值,也就是这里的json只需要 var json = data;//就获取到了。再取得原来Student的属性 var name = json.name(student 的name 属性);比较request.setAttribute("key",value);
这个必须配合forwoar来转发跳转到需要这个value的jsp页面。页面刷新。
json就是一个字符串,只是有一个规范,可以用工具方便的转换成bean,jsonObject就是一个map,没有实体类时,就可以转成这东西
JsonObject这个东西并不是和struts2或者其他框架有什么依赖,只是用来转换数据,将javabean转化成字符串或者将字符串转化成javabean。
我写过这种代码,首先我觉得JSONObject和request.setAttribute()没有关系。JSONObject只是一种数据结构,可以理解为JSON格式的数据结构(key-value 结构),可以使用put方法给json对象添加元素。JSONObject可以很方便的转换成字符串,也可以很方便的把其他对象转换成JSONObject对象。
你们使用request.setAttribute()是同步返回数据吧?如何同步或者异步返回页面数据与数据结构没有关系。如果是同步返回数据,就使用request.setAttribute("key",jsonObject),如果是异步返回数据就使用流方式把jsonObject.toString 返回给页面。
我觉得使用JSONObject的好处就是可以减少自己定义的bean。在页面上也可以类似于对象的形式使用返回的数据。
对于你的第二个问题,如果我理解了你的意思,我觉得struts2 的属性驱动(直接定义参数使用get set方法获取参数)和模型驱动(使用bean 来获取参数)和JSONObject更不相干了,两者没关系的。
JsonObject 就是常说的 json。是一种重要的数据传输对象。其格式为{"key1":value1,"key2",value2....};key 必须是字符串。
因为ajax请求不刷新页面,但配合js可以实现局部刷新,因此json常常被用来作为异步请求的返回对象使用。
通过response.getWriter()获取PrintWriter pw,然后pw.print(json)。如果没有设置response.setContentType("application/json; charset=utf-8"); 则需要自己再js中进行解析。
扩展资料
Java中交互方式分为同步和异步两种:
同步交互:指发送一个请求,需要等待返回,然后才能够发送下一个请求,有个等待过程;
异步交互:指发送一个请求,不需要等待返回,随时可以再发送下一个请求,即不需要等待。
区别:一个需要等待,一个不需要等待,在部分情况下,项目开发中都会优先选择不需要等待的异步交互方式。
比如银行的转账系统,对数据库的保存操作等等,都会使用同步交互操作,其余情况都优先使用异步交互。
安卓sp怎么存储 JSONObject
给你一个工具类,它们都可以相互转化:
你的解决方案:1.先把object转化为json字符串,然后用sp保存字符串即可.
如果要反序列化,先通过sp获取json字符串,再将字符串转化为object;
下面的方法可直接调用,需要导入谷歌的gson包.
public class JsonUtil {
/**
* 把一个map变成json字符串
* @param map
* @return
*/
public static String parseMapToJson(Map
map) {
try {
Gson gson = new Gson();
return gson.toJson(map);
} catch (Exception e) {
}
return null;
}
/**
* 对象转换成json字符串
* @param obj
* @return
*/
public static String toJson(Object obj) {
Gson gson = new Gson();
return gson.toJson(obj);
}
/**
* 把一个json字符串变成对象
* @param json
* @param cls
* @return
*/
public static
T parseJsonToBean(String json, Class
cls) {
Gson gson = new Gson();
T t = null;
try {
t = gson.fromJson(json, cls);
} catch (Exception e) {
}
return t;
}
/**
* 把json字符串变成map
* @param json
* @return
*/
public static HashMap
parseJsonToMap(String json) {
Gson gson = new Gson();
Type type = new TypeToken
<hashmap
>() {
}.getType();
HashMap
map = null;
try {
map = gson.fromJson(json, type);
} catch (Exception e) {
}
return map;
}
/**
* 把json字符串变成集合
* params: new TypeToken
<list
>(){}.getType(),
*
* @param json
* @param type new TypeToken
<list
>(){}.getType()
* @return
*/
public static List
parseJsonToList(String json, Type type) {
Gson gson = new Gson();
List
list = gson.fromJson(json, type);
return list;
}
/**
*
* 获取json串中某个字段的值,注意,只能获取同一层级的value
*
* @param json
* @param key
* @return
*/
public static String getFieldValue(String json, String key) {
if (TextUtils.isEmpty(json))
return null;
if (!json.contains(key))
return "";
JSONObject jsonObject = null;
String value = null;
try {
jsonObject = new JSONObject(json);
value = jsonObject.getString(key);
} catch (JSONException e) {
e.printStackTrace();
}
return value;
}
}
</list
</list
</hashmap
如何判断jsonobject是否存在某个字段
JSONObject有个方法,containsKey,通过JSONObject的对象jsonObject.containsKey(key)就可以判断json对象里含不含这个key,key就是json里的key字符串,如果含的话,再get,不含就不get,就不会报异常了。
java 怎么将string转为jsonobject
转换方法:
import java.io.*;
import org.json.*;
public class Demo {
public static void main(String[] args) throws Exception {
String str = "{\"id_no\":\"342422138002\",\"mobile_no\":\"13800\",\"name\":\"徐丽\"}";
JSONObject obj = new JSONObject(str); //在这里转换。
System.out.println(obj);
System.out.println(obj.get("id_no")); // "342422138002"
}
}
要引入fast-json的包或者开源的包json.jar
java JsonObject怎么判断一个json串中是否含有某个key值啊,
String a = jsonObject.getString("a");
JsonObject jsonObject = new JsonObject(String);
jsonObject.has(key); //返回的是boolean类型的
if (key in jsonObject) { alert('有');} else { 没有} 看错,原来是JAVA,上面是javascript的做法。
java中,怎么把两个jsonObject合并成一个?
方法为,把两个拼装好的JSON串合并成一个新的JSON,两个JSON相同的key值情况下只保存一个,后放入的JSON串对应key的Value值会覆盖先放入的。
具体操作设置方法为
import net.sf.json.JSONObject;
public class JSONCombine
{
public static void main(String[] args)
{
JSONObject jsonOne = new JSONObject();
JSONObject jsonTwo = new JSONObject();
jsonOne.put("name", "kewen");
jsonOne.put("age", "24");
jsonTwo.put("hobbit", "Dota");
jsonTwo.put("hobbit2", "wow");
JSONObject jsonThree = new JSONObject();
jsonThree.putAll(jsonOne);
jsonThree.putAll(jsonTwo);
System.out.println(jsonThree.toString());
}
}
运行结果: {"name":"12345","age":"24","hobbit":"Dota","hobbit2":"wow"}
json转object示例
ObjectMapper objectMapper = new ObjectMapper();
YourClass class = objectMapper.readValue(YourJson, YourClass.class);
如果json中有新增的字段并且是YourClass类中不存在的,则会转换错误。
1)需要加上如下语句,这种方法的好处是不用改变要转化的类
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
YourClass class = objectMapper.readValue(YourJson, YourClass.class);
2)jackson库还提供了注解方法,用在class级别上
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@JsonIgnoreProperties(ignoreUnknown = true)
public class YourClass {
...
}
java net.sf.json.JSONObject.fromObject()方法问题
String jstr="{'json':'jsonvalue','bool':true,'int':1,'double':'20.5'}";
JSONObject json=JSONObject.fromObject(jstr);
boolean bool=json.getBoolean("bool");
int i=json.getInt("int");
double d=json.getDouble("double");
String value=json.getString("json");
System.out.println("bool="+String.valueOf(bool)+"\tjson="+value+"\tint="+i+"\tdouble="+d);
求教json中存放对象问题的解决方法
首先json一般是用来传递web页面和后台的一种数据容器
1,、后台开发接收前台传过来的json字符串,java有个开发包net.sf.json.JSONObject(百度下就有下载地址),调用里面的JSONObject a = new JSONObject(String JsonString)。就可以自动解析JSON字符串数据,得到一个JSONObject对象a,然后a有有个get(String name)的方法,就可以得到a对象里面的具体数据(由键值name获取对应的数据,像map一样)
2、前台页面接收后台传来的JSON对象主要是通过Javascript来解析,有开放JS文件json.js(同样百度下就很容易找到下载地址),有了这个文件就可以解析后台传入的JSON对象了,具体方法:有个JSON.parse(JsonStr)的方法,JsonStr就是后台传入的JSON对象字符串。用此方法得到一个JsonObj后,就可以用Js操作数组的规则对此对象读取数据,常用的有JsonObj.lengh来遍历整个JsonObj。
3、前台将一个JSON对象传到后台可以用2里面提及的开发包中的JSON.stringify(JsonObj)将一个JsonObj对象变成字符串传到后台,然后通过1里面的方法获取该对象里面的内容。处理完毕后传到前台用2里面的方法进行解析
使用JSONObject转换之后字段丢失
方法:
JSONObject.toJSONString(object),转换之后发现属性值为null的属性被删除掉了,查询资料之后发现需要使用SerializerFeature序列化属性:
JSONObject.toJSONString(Object object, SerializerFeature... features)
序列化属性值:
QuoteFieldNames———-输出key时是否使用双引号,默认为true
WriteMapNullValue——–是否输出值为null的字段,默认为false
WriteNullNumberAsZero—-数值字段如果为null,输出为0,而非null
WriteNullListAsEmpty—–List字段如果为null,输出为[],而非null
WriteNullStringAsEmpty—字符类型字段如果为null,输出为”“,而非null
WriteNullBooleanAsFalse–Boolean字段如果为null,输出为false,而非null
示例:
JSONObject.toJSONString(data, SerializerFeature.WriteMapNullValue);