Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Android中将对象转换为JSON_Java_Android_Json_Rest - Fatal编程技术网

Java 在Android中将对象转换为JSON

Java 在Android中将对象转换为JSON,java,android,json,rest,Java,Android,Json,Rest,有没有一种简单的方法可以将Android中的任何对象转换为JSON?大多数人都在使用gson: 从Android3.0(API级别11)开始,Android就有了一个更新、更完善的JSON解析器 将JSON(RFC4627)编码的值作为令牌流读取。这 流包括文本值(字符串、数字、布尔值和 null)以及对象和数组的开始和结束分隔符。 令牌按深度优先顺序遍历,顺序与 它们出现在JSON文档中。在JSON对象中,名称/值 对由单个标记表示 使用RestTemplate轻松完成此操作: final

有没有一种简单的方法可以将Android中的任何对象转换为JSON?

大多数人都在使用gson:

从Android3.0(API级别11)开始,Android就有了一个更新、更完善的JSON解析器

将JSON(RFC4627)编码的值作为令牌流读取。这 流包括文本值(字符串、数字、布尔值和 null)以及对象和数组的开始和结束分隔符。 令牌按深度优先顺序遍历,顺序与 它们出现在JSON文档中。在JSON对象中,名称/值 对由单个标记表示

使用RestTemplate轻松完成此操作:

final String url = "http://192.168.1.50:9000/greeting";
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
Greeting greeting = restTemplate.getForObject(url, Greeting.class);

可能是更好的选择:

@Override
public String toString() {
    return new GsonBuilder().create().toJson(this, Producto.class);
}

下载Gradle库:

compile 'com.google.code.gson:gson:2.8.2'
在方法中使用库

Gson gson = new Gson();

//transform a java object to json
System.out.println("json =" + gson.toJson(Object.class).toString());

//Transform a json to java object
String json = string_json;
List<Object> lstObject = gson.fromJson(json_ string, Object.class);
Gson-Gson=new-Gson();
//将java对象转换为json
System.out.println(“json=“+gson.toJson(Object.class).toString());
//将json转换为java对象
String json=String_json;
List lstObject=gson.fromJson(json_uu字符串,Object.class);
您也可以使用(将其导入到项目中),创建使用当前对象类对其进行序列化或反序列化的转换方法:

import com.fasterxml.jackson.core.jsongGenerationException;
导入com.fasterxml.jackson.core.JsonParser;
导入com.fasterxml.jackson.databind.JsonMappingException;
导入com.fasterxml.jackson.databind.ObjectMapper;
私有字符串convertObjectToJson(对象类对象){
ObjectMapper mapper=新的ObjectMapper();
//默认情况下,不包含显式视图定义的所有字段,请禁用此选项
configure(JsonParser.Feature.IGNORE_未定义,false);
字符串jsonString=“”;
试一试{
jsonString=mapper.writerWithView(ObjectClass.class).writeValueAsString(object);
System.out.println(jsonString);
}捕获(JsonGenerationException e){
e、 printStackTrace();
}捕获(JsonMappingException e){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
返回jsonString;
}

通过这种方式,您可以在POST/PUT/PATCH操作中使用多个发送不同的JSON对象字符串。

您不需要将MappingJackson2HttpMessageConverter添加到RestTemplate,如果Jackson Jar位于类路径中,它会自动添加。为什么这是一个更好的选择?想要将对象转换为JSON字符串并不一定意味着您希望对象的字符串表示始终是JSON。@NeriaNachum,当我回答拥有一个具有许多属性的类时,我就想到了这一点。当您以默认方式(由Android Studio或IntelliJ Idea生成)打印时,重写其
toString()
方法将创建许多字符串对象,但是,这是一行代码,使用GsonBuilder的强大功能。@Thizzer,您完全正确。我一直在想,让开发人员(至少是那些不熟悉这种方法的人)共享和观看是件好事。我也觉得这是一个更好的选择,因为转换可以从模型本身处理,抽象出实现。为什么我们没有toJson的嵌入式方法?但是我们有fromJson?试着使用gson他们有。我更喜欢这种方式,每个对象都有自己的stringify方法,谢谢你的洞察力!。这与所问的正好相反。
compile 'com.google.code.gson:gson:2.8.2'
Gson gson = new Gson();

//transform a java object to json
System.out.println("json =" + gson.toJson(Object.class).toString());

//Transform a json to java object
String json = string_json;
List<Object> lstObject = gson.fromJson(json_ string, Object.class);