ASP.net程式,建立測試頁面。
需引用參考「Newtonsoft.Json.dll」元件
protected void Page_Load(object sender, EventArgs e)
{
int count = 4;
book[] list = new book[count];
for (int i = 0; i < count; i++)
{
list[i] = new book();
list[i].name = "a" + i.ToString();
list[i].price = i;
}
JsonSerializer jsr = new JsonSerializer();
jsr.NullValueHandling = NullValueHandling.Ignore;
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
JsonWriter jw = new JsonTextWriter(sw);
jsr.Serialize(jw, list);
Response.Write(sb.ToString());
Response.End();
}
畫面輸出內容如下:
[{"name":"a0","price":0},{"name":"a1","price":1},{"name":"a2","price":2},{"name":"a3","price":3}]
Android程式
import org.json.*;
使用HttpPost自訂方法將Web的資訊取回
private String TestJson ( ){
String res ="";
String url = "http://127.0.0.1/JSONTest.aspx";
HttpPost hp = new HttpPost(url);
List <NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("id","A")); //隨便定義的參數
try {
hp.setEntity(new UrlEncodedFormEntity(params , HTTP.UTF_8));
HttpResponse hr = new DefaultHttpClient().execute(hp);
if (hr.getStatusLine().getStatusCode() == 200)
res = EntityUtils.toString(hr.getEntity());
}
catch(Exception e){ }
return res;
}
JSON執行解析並取出內容
private void ShowJson()
{
String res = "";
res = TestJson ( );
System.out.println ( res ) ;
呈現「[{"name":"a0","price":0},{"name":"a1","price":1},{"name":"a2","price":2},{"name":"a3","price":3}]」
try
{
JSONArray list = new JSONArray ( res ) ; //解析字串為Array
System.out.println ( list.getString( 1 ) ) ; //以String型態取得Array的第二個Item
呈現「{"name":"a1","price":1}」
JSONObject obj = list.getJSONObject ( 1 ) ; //以JSONObject型態取得Array的第二個Item
System.out.println ( obj.getString("name") ) ; //取得Array的第二個Item中的name項目
呈現「a1」
}
catch(Exception e)
{ }
}