Java 如何使用GoogleGSON库解析下面的json?
这是我从服务器得到的json响应Java 如何使用GoogleGSON库解析下面的json?,java,android,gson,Java,Android,Gson,这是我从服务器得到的json响应 { "awards": [ "31", "33", "44", "45", "46", "48" ] } 但当我试图用下面的代码解析它时 @SerializedName("awards") private UserAwards[] awards; public class UserAwards { } 这给了我以下的例外: com.google.gson.JsonSyntaxExceptio
{
"awards": [
"31",
"33",
"44",
"45",
"46",
"48"
]
}
但当我试图用下面的代码解析它时
@SerializedName("awards")
private UserAwards[] awards;
public class UserAwards {
}
这给了我以下的例外:
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 247.
请帮助我找到如何解析此内容。如果您自己无法将json转换为对象,请检查此内容
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Generated;
import javax.validation.Valid;
import com.google.gson.annotations.Expose;
@Generated("org.jsonschema2pojo")
public class UserAwards {
@Expose
@Valid
private List<String> awards = new ArrayList<String>();
public List<String> getAwards() {
return awards;
}
public void setAwards(List<String> awards) {
this.awards = awards;
}
}
import java.util.ArrayList;
导入java.util.List;
导入javax.annotation.Generated;
导入javax.validation.Valid;
导入com.google.gson.annotations.Expose;
@生成(“org.jsonschema2pojo”)
公共类用户奖{
@暴露
@有效的
私有列表奖励=新的ArrayList();
公开名单{
回报奖;
}
公众奖项(名单奖项){
这个。奖励=奖励;
}
}
这是用于解析的:
Gson gson = new GsonBuilder().setFieldNamingPolicy(
FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create();
userAwards= gson.fromJson(jsonResponse.toString(), UserAwards.class);
你的班级应该是这样的
public class UserAwards{
@Expose
private ArrayList<String> awards;
}
公共类用户奖励{
@暴露
私人ArrayList奖;
}
加上addset和get方法:)如下解析:
private void parseResponse(final Reader p_response) {
m_handler.post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
if (p_response != null) {
Gson m_gson = new GsonBuilder().setFieldNamingStrategy(
FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create();
UserAwards m_details = m_gson.fromJson(p_response,
UserAwards.class);
if (m_details != null) {
for (int i = 0; i < m_details.awards.length; i++) {
System.err.println("IDs======"
+ m_details.awards[i].toString());
}
}
public class UserAwards {
public List<String> awards = new ArrayList<String>();
}
private void parseResponse(最终读卡器p_响应){
m_handler.post(新的Runnable(){
@凌驾
公开募捐{
//TODO自动生成的方法存根
if(p_响应!=null){
Gson m_Gson=new GsonBuilder().setFieldNamingStrategy(
FieldNamingPolicy.LOWER_CASE_WITH_下划线).create();
UserAwards m_details=m_gson.fromJson(p_响应,
用户奖励(类);
如果(m_详细信息!=null){
对于(int i=0;i
还可以按如下方式制作您的POJO课程:
private void parseResponse(final Reader p_response) {
m_handler.post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
if (p_response != null) {
Gson m_gson = new GsonBuilder().setFieldNamingStrategy(
FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create();
UserAwards m_details = m_gson.fromJson(p_response,
UserAwards.class);
if (m_details != null) {
for (int i = 0; i < m_details.awards.length; i++) {
System.err.println("IDs======"
+ m_details.awards[i].toString());
}
}
public class UserAwards {
public List<String> awards = new ArrayList<String>();
}
公共类用户奖励{
公共列表奖励=新的ArrayList();
}
奖励
是Json数组。显示完整的code@Shiv看看我的答案。