从Web服务解析字符串到Json对象



我知道关于这个问题有很多问题,也有很多答案,但是我还没有找到这个问题的解决方案,不知道是否有人有一些想法。

请注意,我是Android的新手,不幸地从一个不再与我们在一起的Android开发人员那里继承了这个项目。

这是我正在处理的。我有一个Android应用程序,调用一个web服务,并得到一个响应流。

我试过使用String ScanString = new Scanner(inStream).useDelimiter("\A").next();

似乎可以工作并产生如下字符串

{"RegResponseResult":"{u000du000a "REGISTERED": true,u000du000a "COMPANY_URL": "http://111.222.3.444/ABC/XYZ.svc/"u000du000a}"}

我的问题是.....当我尝试使用JSONObject JSONObj = new JSONObject(ScanString)将字符串转换为JSONObject时,结果对象只有一个名称evaluepair .

即:key=RegResponseResultvalue={ "REGISTERED": true, rn"COMPANY_URL": "http://111.222.3.444/ABC/XYZ.svc/"rn}} "

如何喷气一个JsonObject,忽略' responseresult ',并使用包含标签代替,使它最终看起来像这样。

ie: JSONObj =

Key=REGESTERD value=true Key=COMPANY_URL value=http://111.222.3.444/ABC/XYZ.svc

"RegResponseResult"是字符串,所以你可能不得不再次重新解析它以获得内部json对象。

String innerJson = JSONObj.getString("RegResponseResult");
JSONObject inner = new JSONObject(innerJson);

谢谢你的建议。

我最终改变了我的webservice,输出一个流而不是字符串。
原来WCF添加了一堆到字符串,这使它作为Json字符串无效。

但是将其作为流返回,不会导致添加任何内容。这是webservice的流构建器代码…如果有人需要的话。

    //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);

相关内容

  • 没有找到相关文章

最新更新