我知道有很多关于此的问题,也有很多答案,但是我还没有找到解决这个问题的方法,并且想知道是否有人有想法。
请注意,我是Android的新手,不幸的是从一个不再和我们在一起的Android开发者那里继承了这个项目。
这是我正在处理的事情。 我有一个Android应用程序,它调用Web服务,并获得响应流。
我试过用
String ScanString = new Scanner(inStream).useDelimiter("\\A").next();
似乎工作并产生如下字符串
{"RegResponseResult":"{\u000d\u000a \"REGISTERED\": true,\u000d\u000a \"COMPANY_URL\": \"http:\/\/111.222.3.444\/ABC\/XYZ.svc\/\"\u000d\u000a}"}
我的问题是......
当我尝试使用JSONObject JSONObj = new JSONObject(ScanString)
将字符串转换为JSONObject时,Resutling Object只有一个nameValuePair。
即:key=RegResponseResult
和value={ "REGISTERED": true, \r\n"COMPANY_URL": "http://111.222.3.444/ABC/XYZ.svc/"\r\n}
}“
如何喷射JsonObject,忽略'RegResponseResult',然后使用包含标签,以便最终看起来像这样。
ie:JSONObj =
Key=REGESTERD value=true
Key=COMPANY_URL value=http://111.222.3.444/ABC/XYZ.svc
非常感谢。
答案 0 :(得分:0)
"RegResponseResult"
是字符串,因此您可能需要再次重新解析它以获取内部json对象。
String innerJson = JSONObj.getString("RegResponseResult");
JSONObject inner = new JSONObject(innerJson);
答案 1 :(得分:0)
感谢您的想法。
我最终改变了我的webservice,输出了一个流而不是一个字符串 结果是WCF在字符串中添加了一串\,这使它无效为Json String。
但是将其作为流返回,并不会导致添加任何内容。 这是网络服务的Stream构建器代码......如果有其他人需要它。
//When Reading the DB in the Iaaa.csv
public Stream RegResponse(String DeviceData)
{
// *****connect to db and call stored proc goes here****
// .................
// read parameters back from cmd object.
DeviceRegisterResponse Response = new DeviceRegisterResponse();
Response.REGISTERED = Convert.ToBoolean(cmd.Parameters["REGISTERED"].Value);
Response.COMPANY_URL = Convert.ToString(cmd.Parameters["COMPANY_URL"].Value);
return GenerateStreamFromString(JsonConvert.SerializeObject(Response, Formatting.None));
}
//When passsing it back from the service in the Iaaa.cs
[OperationContract]
[WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "REG/{id}")]
Stream RegResponse(string id);