爲了在開放中獲得這一點,我是JAVA,KSOAP和JSON的新手。所以我會盡我所能解釋這一點。從.Net webservice解析JSON響應
前段時間,我創建了一個Web服務供Blackberry Apps使用,我們使用Visual Studio插件構建了這些服務。現在我正在開發的這個項目,我想要爲Android設備使用相同的Web服務。在大多數情況下,我有Android應用程序的基本代碼完成和工作。這是我的問題:
我可以成功地調用web服務並獲得響應。我知道從創建webservice它發送一個JSON響應。我的問題是試圖解析通過JSON響應。我找到了一些適合自己需求的例子,但是我已經掛上了一件事。 (0).toString()這裏是我得到的,如果我「getProperty(0).toString()」,則返回「 ...
anyType{Artist=anyType{TrackName=Champagne Supernova;};
這裏是我使用的解析JSON對象的代碼....
SoapObject gr = (SoapObject)envelope.getResponse();
String ro = gr.getProperty(0).toString();
//Added just to see structure of response
Artist_Result.add(gr.toString());
if (ro.startsWith("{"))
{
JSONObject JSONObj = new JSONObject(ro);
Iterator<String> itr = JSONObj.keys();
while (itr.hasNext())
{
String key = (String)itr.next();
String value = JSONObj.getString(key);
//bundleResult.putString(key, value);
Artist_Result.add(value);
}
}
else if (ro.startsWith("["))
{
JSONArr = new JSONArray(ro);
for (int i = 0; i < JSONArr.length(); i++)
{
JSONObj = (JSONObject)JSONArr.get(i);
//bundleResult.putString(String.valueOf(i), JSONObj.toString());
Artist_Result.add(JSONObj.toString());
}
}
WebService的代碼:
[WebMethod]
[return: System.Xml.Serialization.XmlArrayItemAttribute(typeof(Artist))]
public Artist[] GetArtist(string ArtistQuery)
{
// All the SQL Stuff Here
SqlDataReader sReader;
sReader = cmd.ExecuteReader();
List<Artist> Artists = new List<Artist>();
while (sReader.Read())
{
Artist result = new Artist();
result.TrackName = sReader.GetString(0);
Artists.Add(result);
}
sReader.Close();
sqlConn.Close();
return Artists.ToArray();
}
public class Artist
{
public string TrackName;
}
示例XML輸出的瀏覽器:
<?xml version="1.0" encoding="utf-8" ?>
- <ArrayOfArtist xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://bb.mcrcog.com/">
- <Artist>
<TrackName>Champagne Supernova</TrackName>
</Artist>
- <Artist>
<TrackName>Don't Look Back In Anger</TrackName>
</Artist>
- <Artist>
<TrackName>D'you Know What I Mean</TrackName>
</Artist>
- <Artist>
<TrackName>Go Let It Out</TrackName>
</Artist>
我有一種感覺,我需要實現一個類,和getter/setter方法對Android的一面。我只是不確定如何去做這件事。任何幫助將不勝感激!
據我所知,這不是有效的JSON,這將是爲您的困難做出貢獻。 http://json.org/ – CommonsWare 2010-04-21 16:03:24
這對我來說看起來不像是有效的JSON。我懷疑你將能夠獲得內置的解析器來做任何事情 – synic 2010-04-21 16:04:01
我知道這將是一個搞砸了項目....但是當我建立的Web服務,就像我說它是用於黑莓應用程序,使用Visual Studio的插件......反過來它們實際上是用JavaScript編寫的,Web服務完美地與BB應用程序一起工作。插件自動分析響應(通過使用Visual Studio的「添加Web參考」),所以我從來不必處理這個問題,直到我跳過平臺,現在我迷路了。 – Maskau 2010-04-21 17:04:28