我有几个这样的类。我想把这些类转换成JSONObject格式。
import java.io.Serializable;
import com.google.gson.annotations.SerializedName;
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@SerializedName("id")
private Integer mId;
@SerializedName("name")
private String mName = "";
@SerializedName("email")
private String mEmail;
public Integer getId() {
return mId;
}
public void setId(Integer id) {
mId = id;
}
public String getName() {
return mName;
}
public void setName(String name) {
mName = name;
}
public String getEmail() {
return mEmail;
}
public void setEmail(String email) {
mEmail = email;
}
}
我知道我可以将这些类转换为JSONObject格式,如下所示:
User user = new User();
JSONObject jsonObj = new JSONObject();
try {
jsonObj.put("id", user.getId());
jsonObj.put("name", user.getName());
jsonObj.put("email", user.getEmail());
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
问题是,我需要对许多不同的类执行此操作,这些类在许多文件中的长度都比这个长得多。我可以使用GSON从myClass填充JSONObject吗?这样我就不需要在每次类结构更改时都进行编辑了。
下面的代码返回一个JSON字符串,但我需要它作为一个Object,因为当我将它发送到通过REST API发送请求的系统时,它会使用不需要的引号发送。
User user = new User();
Gson gson = new Gson();
Object request = gson.toJson(user);
当我在另一个JSON构建器中使用它时,它会请求一个Object,我得到
{"request":"{"id":"100","name":"Test Name","email":"test@example.com"}"}
当我想
{"request":{"id":"100","name":"Test Name","email":"test@example.com"}}
3条答案
按热度按时间emeijp431#
我发现以下代码可以与GSON一起使用:
但是,这不是类型安全的。
a0x5cqrl2#
下面是一个可以用来使用反射构建JSONObject的粗略示例。
警告:它并不漂亮,也不包含真正的类型安全。
下面是一个用法示例:
输出量
ecfsfe2w3#
请尝试以下代码: