com.google.gson.JsonSyntaxException 解析简单的 JSON Inputstream 时

用户2581831

解析简单的 JSON Inputstream 时,我收到 com.google.gson.JsonSyntaxException

我的 json 是这个。

{ "logdata": [{ "millis": "1000", "light": "333" }, { "millis": "2000", "light": "333" } ] }

Java类 -

import java.util.List;
public class Datalist {

private List<NavData> logdata;

/**
 * @return the logdata
 */
public List<NavData> getLogdata() {
    return logdata;
}

/**
 * @param logdata the logdata to set
 */
public void setLogdata(List<NavData> logdata) {
    this.logdata = logdata;
}

公共类导航数据{

private String millis;

private String light;

/**
 * @return the millis
 */
public String getMillis() {
    return millis;
}

/**
 * @param millis the millis to set
 */
public void setMillis(String millis) {
    this.millis = millis;
}

/**
 * @return the light
 */
public String getLight() {
    return light;
}

/**
 * @param light the light to set
 */
public void setLight(String light) {
    this.light = light;
}

}

Json Input Stream Reader Class - 而 assetData 是上述 json 的 inputStream。

   JsonReader reader = new JsonReader(new InputStreamReader(assetData, "UTF-8"));
   Gson gson = new GsonBuilder().create();

   Datalist out = gson.fromJson(reader, Datalist.class);

   System.out.println(".."+out.getLogdata());
塞尔吉奥·埃斯库德罗

问题是因为您无法将字符串列表转换为包含以下项目的列表:

{
 "millis": "1000",
 "light": "333",
 "temp": "78.32",
 "vcc": "3.54"
}

如果要强制转换为这些项目的列表,则需要使用这些项目创建一个类,其属性为:

@Expose
private List<NavData> logdata;

其中NavData是具有这些参数的类

import com.google.gson.annotations.Expose;
public class NavData {
  @Expose
  private String millis;
  @Expose
  private String light;

  public String getMillis() {
      return millis;
  }
  public void setMillis(String millis) {
      this.millis = millis;
  }
  public String getLight() {
      return light;
  }
  public void setLight(String light) {
      this.light = light;
  }
}

读取 inputStream :

StringBuilder stringBuilder = new StringBuilder();
CharBuffer charBuffer = CharBuffer.allocate(1024);

while (yourInputStream.read(charBuffer) > 0) {
      charBuffer.flip();
      stringBuilder.append(charBuffer.toString());
      charBuffer.clear();
}

最后 :

Gson gson = new GsonBuilder().enableComplexMapKeySerialization()
    .excludeFieldsWithoutExposeAnnotation().serializeNulls().create();

Datalist result = gson.fromJson(stringBuilder.toString(), Datalist.class);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

尝试解析json中的日期/时间时com.google.gson.JsonSyntaxException

使用Retrofit / Gson解析日期时发生JsonSyntaxException

使用com.google.gson解析JSON

造成原因:com.google.gson.JsonSyntaxException:com.google.gson.stream.MalformedJsonException:预期第':'行

如何在Java中解析Json文件时无法转换com.google.gson.JsonArray

Google Gson-com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期为字符串,但为BEGIN_OBJECT

硒网络驱动程序java.lang.NoClassDefFoundError:com / google / gson / JsonSyntaxException

错误:onFailure:com.google.gson.JsonSyntaxException:java.lang.NumberFormatException:预期为int,但为57213780054

即使在android中使用TypeToken也会获得com.google.gson.JsonSyntaxException?

从json对象字符串转换为Java对象om.google.gson.JsonSyntaxException

用于JSON解析的Android模型显示ClassCastException:com.google.gson.JsonObject无法转换为com.google.gson.JsonArray

java.util.concurrent.ExecutionException:com.google.gson.JsonSyntaxException:2020-01-15 15:13:42.0

android kotlin retrofit2 com.google.gson.JsonSyntaxException 预期字符串,但为 BEGIN_OBJECT

com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期为字符串,但为BEGIN_OBJECT

当要解析的元素是json字符串的元素时,使用gson解析json的最简单方法是什么?

使用GSON抛出IllegalArgumentException的简单JSON解析

使用Gson将JSON转换为POJO:JsonSyntaxException

使用GSON解析JSON时使用枚举

使用GSON解析JSON时出错

无法解析导入com.google.api.client.json.gson.GsonFactory

发布到我的Django API时:errorcom.google.gson.JsonParseException:无法解析json

使用Google的Gson进行严格的JSON解析?

使用Google Gson解析Json Feed

用google-gson解析JSON

Gson:日期上的JsonSyntaxException

IllegalStateException:应为字符串,但在第1行第2列路径$;中为BEGIN_OBJECT。嵌套的异常是com.google.gson.JsonSyntaxException

com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期为 BEGIN_ARRAY,但在第 1 行第 101 列路径为 BEGIN_OBJECT

kotlin com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: 预期为 BEGIN_OBJECT 但在第 1 行第 2 列路径 $ 处为 BEGIN_ARRAY

com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期为BEGIN_ARRAY,但在Android中为BEGIN_OBJECT