Aem 解析简单JSON输入流时的com.google.gson.JsonSyntaxException

Aem 解析简单JSON输入流时的com.google.gson.JsonSyntaxException,aem,Aem,解析简单JSON输入流时,我得到com.google.gson.JsonSyntaxException 我的目标是这个 { “日志数据”:[{ “毫”:“1000”, “轻”:“333” }, { “米利斯”:“2000年”, “轻”:“333” } ] } Java类- import java.util.List; public class Datalist { private List<NavData> logdata; /** * @return the logdata

解析简单JSON输入流时,我得到com.google.gson.JsonSyntaxException

我的目标是这个

{ “日志数据”:[{ “毫”:“1000”, “轻”:“333” }, { “米利斯”:“2000年”, “轻”:“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;
}
}

Json输入流读取器类-而assetData是上述Json的输入流

   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;
要读取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);

我已经更新了这张票上的细节以符合你所说的。但我仍然看到了相同的JsonSyntaxException。您能提供更多的输入吗?另外,我得到了这个结果-原因是:java.lang.IllegalStateException:预期的开始对象,但在第6行第1列路径$Hi SergioEscudero处是结束文档-在我的场景中,输入是“inputStream,但不是String”。正如我在下面的方法中看到的,“StringToCast”是字符串。那么我应该把inputStream转换成字符串吗?Datalist结果=gson.fromJson(“StringToCast”,Datalist.class);
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);