标题一:利用json上传数据:
两个类jsonobjct和jsonarray:
1.jsonobject:jsonobject是提供的一个类专门去放值,形式就是一个键值加上一个参数。2.jsonarray:jsonarray提供一个相当于存放单个jsonobject的对象。3.在jison中每个{“key”,"value"}是一个对象,可以用一个jsonobject存放。例子如下:
现在有三个数据需要提交:[{"name":"Tom"},{"age":"21"},{"sex":"men"}]
JSONArray arry=new JSONArray();//声明一个jsonarray用来存放jsonobject中的每一个对象
JSONObject [] jsonObjects=new JSONObject[3];//因为需要存放三个对象分别是name,age,sex
for(int i=0;i<3;i++)
{
JSONObject jo=new JSONObject();//new一个json
jsonObjects[i]=jo;//将三个new出来的jsonobject存放在jsonobject数组中
}
try {
jsonObjects[0].put("name",Tom);
jsonObjects[1].put("age",21);
jsonObjects[2].put(sex,men);
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for(int i=0;i<3;i++)//将jsonobject转换成jsonarray
{
arry.put(jsonObjects[i]);
}
Post(arry.toString()); //将jsonarray转换成string利用post提交数据
}
post提交数据:
public int Post(final String message)
{
try {
url=new URL(urlpath);//url地址
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
Toast.makeText(getApplicationContext(), "服务器繁忙", 0).show();
e.printStackTrace();
}
new Thread(new Runnable() {
public void run() {
HttpURLConnection conn;
try {
conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5000);
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("ser-Agent", "Fiddler");
conn.setRequestProperty("Content-Type", "项目名称");
OutputStream os = conn.getOutputStream();
os.write(message.getBytes());//转换成字节流写入
os.close();
int code = conn.getResponseCode();
if(code==200)
{
InputStream is = conn.getInputStream();
final String json = NetUtils.readString(is);//NetUtils获得输入流
JSONObject jObject=new JSONObject(json);//new一个jsonobject对象来获取返回的值 final int fcode=jObject.getInt("xxx");//获取返回值
runOnUiThread( new Runnable() {
public void run() {
String ecode = null;
switch (fcode) {
case 0:
ecode="x";
break;
case 1:
ecode="x";
break;
case 2:
ecode="x";
break;...................//不同情况写出不同操作
}
Toast.makeText(getApplicationContext(), ecode, 0).show();
}
});
}
else
{
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(getApplicationContext(), "上传服务器失败", 0).show();
}
});
}
} catch (IOException e) {
// TODO Auto-generated catch block
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(getApplicationContext(), "IO输入输出流失败", 0).show();
}
});
e.printStackTrace();
} catch (JSONException e) {
// TODO Auto-generated catch block
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(getApplicationContext(), "JSON对象失败", 0).show();
}
});
e.printStackTrace();
}
}
}).start();
return -1;
}
标题二:json解析数据:
1.解析json利用的类是jsontoken:
JSONTokener jsonTokener=new JSONTokener(json);
JSONObject json;
try {
json = (JSONObject) jsonTokener.nextValue();//获取当前json
values=jo.getString("value1");
.............
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return values;