我在我的 android 应用程序中使用 Gson 类来扁平化对象并通过 REST 将它们发送到服务器,然后使用 HTTP 帖子和响应返回。它一直运作良好。
但是在我正在编写的新应用程序中,我试图做同样的事情,但使用 SMS 消息而不是 HTTP Posts。比如我有一堂课……
class LocReturn
{
public String error; //one char y = error
public String accuracy;
public String hyperlink;
public String stationary; //one char y = stationary
public String speedmph;
public String speedkph;
public String bearing;
}
在我展平类之前,超链接字符串获得以下值。. .
http://maps.google.com/maps?z=17&t=h&q=loc:31.7898,-111.0354
但是,当我检查 json 字符串时,我看到超链接已更改为 . . .
http://maps.google.com/maps?z\u003d17\u0026t\u003dh\u0026q\u003dloc:31.7898,-111.0354
此外,SMS 发送收到 NullPointer 异常。
发送 SMS 消息的代码是 。. .
Gson gson = new Gson();
String jsonstring = gson.toJson(myReturn);
String SMSBody = "###2" + jsonstring;
DebugLog.debugLog("Mole is sending Back: " + " num= " + GlobalStuff.Mobileno + " SMSBody= " + SMSBody, false);
SmsManager
.getDefault()
.sendTextMessage(GlobalStuff.Mobileno, null, SMSBody, null, null);
DebugLog.debugLog("After SMS Send " + SMSBody, true);
finish();
所以,(1)我不明白为什么我得到 NullPointer 和(2)为什么超链接会被改变,这与它有什么关系。谢谢,Gary 编辑:新的 json 对象创建...
Gson gson = new GsonBuilder().disableHtmlEscaping().create();
确实阻止了超链接被修改,但是 nullPointerException 继续。这绝对是导致异常的 sendText 行,因为当我将 SMSBody 替换为“hello world”时,它工作正常。SMSBody 的内容是...
###2{"accuracy":"Excellent","bearing":"","error":"n","hyperlink":"http://maps.google.com/maps?z=17&t=h&q=loc:31.7898,-111.0353","speedkph":"","speedmph":"","stationary":"y"}
这以某种方式导致了 nullPointerException