如何上传json格式的数据到服务器?
首先,你可以手动拼json。然后是人ajax的方式,或者windowloacation=url的方式向服务端提交。
其次,但是不管你怎么拼,都不能发送等文件到服务器!
这并不是说json格式不行,而是在页面上发送信息到服务端的时候文件类的是由浏览器自动转为流的,而你在页面上的任何脚本都不能读取文件!
json数据格式解析我自己分为两种;
一种是普通的,一种是带有数组形式的;
普通形式的:
服务器端返回的json数据格式如下:
复制代码代码如下:
{"userbean":{"Uid":"100196","Showname":"\u75af\u72c2\u7684\u7334\u5b50","Avtar":null,"State":1}}
分析代码如下:
复制代码代码如下:
// TODO 状态处理 500 200
int res = 0;
res = httpClientexecute(httpPost)getStatusLine()getStatusCode();
if (res == 200) {
/
当返回码为200时,做处理
得到服务器端返回json数据,并做处理
/
HttpResponse httpResponse = httpClientexecute(httpPost);
StringBuilder builder = new StringBuilder();
BufferedReader bufferedReader2 = new BufferedReader(
new InputStreamReader(httpResponsegetEntity()getContent()));
String str2 = "";
for (String s = bufferedReader2readLine(); s != null; s = bufferedReader2
readLine()) {
builderappend(s);
}
Logi("cat", ">>>>>>" + buildertoString());
JSONObject jsonObject = new JSONObject(buildertoString())
getJSONObject("userbean");
String Uid;
String Showname;
String Avtar;
String State;
Uid = jsonObjectgetString("Uid");
Showname = jsonObjectgetString("Showname");
Avtar = jsonObjectgetString("Avtar");
State = jsonObjectgetString("State");
带数组形式的:
服务器端返回的数据格式为:
复制代码代码如下:
{"calendar":
{"calendarlist":
[
{"calendar_id":"1705","title":"(\u4eb2\u5b50)ddssd","category_name":"\u9ed8\u8ba4\u5206\u7c7b","showtime":"1288927800","endshowtime":"1288931400","allDay":false},
{"calendar_id":"1706","title":"(\u65c5\u884c)","category_name":"\u9ed8\u8ba4\u5206\u7c7b","showtime":"1288933200","endshowtime":"1288936800","allDay":false}
]
}
}
分析代码如下:
复制代码代码如下:
// TODO 状态处理 500 200
int res = 0;
res = httpClientexecute(httpPost)getStatusLine()getStatusCode();
if (res == 200) {
/
当返回码为200时,做处理
得到服务器端返回json数据,并做处理
/
HttpResponse httpResponse = httpClientexecute(httpPost);
StringBuilder builder = new StringBuilder();
BufferedReader bufferedReader2 = new BufferedReader(
new InputStreamReader(httpResponsegetEntity()getContent()));
String str2 = "";
for (String s = bufferedReader2readLine(); s != null; s = bufferedReader2
readLine()) {
builderappend(s);
}
Logi("cat", ">>>>>>" + buildertoString());
/
这里需要分析服务器回传的json格式数据,
/
JSONObject jsonObject = new JSONObject(buildertoString())
getJSONObject("calendar");
JSONArray jsonArray = jsonObjectgetJSONArray("calendarlist");
for(int i=0;i<jsonArraylength();i++){
JSONObject jsonObject2 = (JSONObject)jsonArrayopt(i);
CalendarInfo calendarInfo = new CalendarInfo();
calendarInfosetCalendar_id(jsonObject2getString("calendar_id"));
calendarInfosetTitle(jsonObject2getString("title"));
calendarInfosetCategory_name(jsonObject2getString("category_name"));
calendarInfosetShowtime(jsonObject2getString("showtime"));
calendarInfosetEndtime(jsonObject2getString("endshowtime"));
calendarInfosetAllDay(jsonObject2getBoolean("allDay"));
calendarInfosadd(calendarInfo);
}
总结,普通形式的只需用JSONObject ,带数组形式的需要使用JSONArray 将其变成一个list。
JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。
简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。简单来说:json就是一种在各个编程语言中流通的数据格式,负责不同编程语言中的数据传递和交互。
扩展资料
注意事项:
1,json的键值对的键部分,必须用双引号"包裹,单引号都不行(所以如果在键中出现了关键字,也被字符化了),而js中对象没有强制要求(所以在键中不允许出现关键字)。
2,json的键值对的值部分,不允许出现函数function,undefined,NaN,但是可以有null,js中对象的值中可以出现。
3,json数据结束后,不允许出现没有意义的逗号,如:{"name":"admin","age":18,},注意看数据结尾部分18的后面的逗号,不允许出现。
-Json
SON的全称是”JavaScript Object Notation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式。XML也是一种数据交换格式,为什么没有选择XML呢?因为XML虽然可以作为跨平台的数据交换格式,但是在JS(JavaScript的简写)中处理XML非常不方便,同时XML标记比数据多,增加了交换产生的流量,而JSON没有附加的任何标记,在JS中可作为对象处理,所以我们更倾向于选择JSON来交换数据。
JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(网络传输速率)。JSON格式取代了xml给网络传输带来了很大的便利,但是却没有了xml的一目了然,尤其是json数据很长的时候,我们会陷入繁琐复杂的数据节点查找中。
JSON可以使用专门的编译器打开。JSON有两种表示结构,对象和数组。对象结构以”{”大括号开始,以”}”大括号结束。中间部分由0或多个以”,”分隔的”key(关键字)/value(值)”对构成,关键字和值之间以”:”分隔。
首先要明白ajax的基本格式,参考下面的内容,可以发现,success是请求成功后服务器返回的数据,接收只需要把回调函数的值处理就可以了,如:
response:即为服务器返回的数据,{"uid":123,"name":"jghdream"},
输出如下:
success: function(response){
consolelog(responseuid);
consolelog(responsename);
}
以下是ajax的一些参数:
$ajax({type:'post',
url:'/testajaxphp',
dataType:'json',
data:{uid:uid,rands:Mathrandom()},
success: function(){
alert('ajax return success');
}});
url,类型:String,默认值: 当前页地址。发送请求的地址
data, 类型:String,发送到服务器的数据。将自动转换为请求字符串格式。GET 请求中将附加在 URL 后。查看 processData 选项说明以禁止此自动转换。必须为 Key/Value 格式。如果为数组,jQuery 将自动为不同值对应同一个名称。如 {foo:["bar1", "bar2"]} 转换为 '&foo=bar1&foo=bar2'
dataType,类型:String,预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断,比如 XML MIME 类型就被识别为 XML。在 14 中,JSON 就会生成一个 JavaScript 对象,而 script 则会执行这个脚本。随后服务器端返回的数据会根据这个值解析后,传递给回调函数。可用值:
"xml": 返回 XML 文档,可用 jQuery 处理。
"html": 返回纯文本 HTML 信息;包含的 script 标签会在插入 dom 时执行。
"script": 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了 "cache" 参数。注意:在远程请求时(不在同一个域下),所有 POST 请求都将转为 GET 请求。(因为将使用 DOM 的 script标签来加载)
"json": 返回 JSON 数据 。
"jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurlcallback=" jQuery 将自动替换 为正确的函数名,以执行回调函数。
"text": 返回纯文本字符串
success,当请求之后调用。传入返回后的数据,以及包含成功代码的字符串。
jQuery ajax请求
按照json格式拼接好字符串返回就行了
返回
服务器端代码
PrintWriter writer = responsegetWriter();
writerwrite(jotoString()); //这里是你要返回的字符串
writerflush();
writerclose();
//url是请求的服务器地址
//data是请求的参数,格式data:{id:1,name:'user1'}
jQueryajax({type:"POST", url:"member_overtimeaction",data:{}, beforeSend:function () {
//提交数据状态
}, success:function (data) {
//服务器端返回参数处理
var objJson = eval("(" + data + ")"); //json字符串转换为Object
//通过ojbJsonkey 操作 类似与map
}});
一、 JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧。
Json建构于两种结构:
1、“名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。 如:
{
“name”:”jackson”,
“age”:100
}
2、值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)如:
{
“students”:
[
{“name”:”jackson”,“age”:100},
{“name”:”michael”,”age”:51}
]
}
二、java解析JSON步骤
A、服务器端将数据转换成json字符串
首先、服务器端项目要导入json的jar包和json所依赖的jar包至builtPath路径下(这些可以到JSON-lib官网下载:)
然后将数据转为json字符串,核心函数是:
public static String createJsonString(String key, Object value)
{
JSONObject jsonObject = new JSONObject();
jsonObjectput(key, value);
return jsonObjecttoString();
}
B、客户端将json字符串转换为相应的javaBean
1、客户端获取json字符串(因为android项目中已经集成了json的jar包所以这里无需导入)
public class HttpUtil
{
public static String getJsonContent(String urlStr)
{
try
{// 获取HttpURLConnection连接对象
URL url = new URL(urlStr);
HttpURLConnection httpConn = (HttpURLConnection) url
openConnection();
// 设置连接属性
httpConnsetConnectTimeout(3000);
httpConnsetDoInput(true);
httpConnsetRequestMethod("GET");
// 获取相应码
int respCode = httpConngetResponseCode();
if (respCode == 200)
{
return ConvertStream2Json(httpConngetInputStream());
}
}
catch (MalformedURLException e)
{
// TODO Auto-generated catch block
eprintStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
eprintStackTrace();
}
return "";
}
private static String ConvertStream2Json(InputStream inputStream)
{
String jsonStr = "";
// ByteArrayOutputStream相当于内存输出流
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
// 将输入流转移到内存输出流中
try
{
while ((len = inputStreamread(buffer, 0, bufferlength)) != -1)
{
outwrite(buffer, 0, len);
}
// 将内存流转换为字符串
jsonStr = new String(outtoByteArray());
}
catch (IOException e)
{
// TODO Auto-generated catch block
eprintStackTrace();
}
return jsonStr;
}
}
2、获取javaBean
public static Person getPerson(String jsonStr)
{
Person person = new Person();
try
{// 将json字符串转换为json对象
JSONObject jsonObj = new JSONObject(jsonStr);
// 得到指定json key对象的value对象
JSONObject personObj = jsonObjgetJSONObject("person");
// 获取之对象的所有属性
personsetId(personObjgetInt("id"));
personsetName(personObjgetString("name"));
personsetAddress(personObjgetString("address"));
}
catch (JSONException e)
{
// TODO Auto-generated catch block
eprintStackTrace();
}
return person;
}
public static List<Person> getPersons(String jsonStr)
{
List<Person> list = new ArrayList<Person>();
JSONObject jsonObj;
try
{// 将json字符串转换为json对象
jsonObj = new JSONObject(jsonStr);
// 得到指定json key对象的value对象
JSONArray personList = jsonObjgetJSONArray("persons");
// 遍历jsonArray
for (int i = 0; i < personListlength(); i++)
{
// 获取每一个json对象
JSONObject jsonItem = personListgetJSONObject(i);
// 获取每一个json对象的值
Person person = new Person();
personsetId(jsonItemgetInt("id"));
personsetName(jsonItemgetString("name"));
personsetAddress(jsonItemgetString("address"));
listadd(person);
}
}
catch (JSONException e)
{
// TODO Auto-generated catch block
eprintStackTrace();
}
return list;
}
0条评论