js 传递webservice json传递 的时候出错了,请问谁能帮帮忙啊

Introducing JSON
{ members }
pair , members
string : value
[ elements ]
value , elements
char chars
any-Unicode-character-
&&&&except-"-or-\-or-
&&&&control-character
\u four-hex-digits
int frac exp
digit1-9 digits
- digit1-9 digits
digit digits
JSON (JavaScript Object Notation) is a lightweight data-interchange
format. It is easy for humans to read and write. It is easy for machines to
parse and generate. It is based on a subset of the
. JSON is a text format that is completely
language independent but uses conventions that are familiar to programmers of
the C-family of languages, including C, C++, C#, Java, JavaScript, Perl, Python,
and many others. These properties make JSON an ideal data-interchange language.
JSON is built on two structures:
A collection of name/value pairs. In various languages, this is realized
as an object, record, struct, dictionary, hash table, keyed list, or
associative array.
An ordered list of values. In most languages, this is realized as an array,
vector, list, or sequence.
These are universal data structures. Virtually all modern
programming languages support them in one form or another. It makes sense
that a data format that is interchangeable with programming languages also
be based on these structures.
In JSON, they take on these forms:
An object is an unordered set of name/value pairs. An object
begins with {&(left brace) and ends
with }&(right brace). Each name is followed
by :&(colon) and the name/value pairs are
separated by ,&(comma).
An array is an ordered collection of values. An array begins
with [&(left bracket) and ends
with ]&(right bracket). Values are separated
by ,&(comma).
A value can be a string in double quotes, or a number,
or true or false or null, or an object or
an array. These structures can be nested.
A string is a sequence of zero or more Unicode characters, wrapped
in double quotes, using backslash escapes. A character is represented as a
single character string. A string is very much like a C or Java string.
A number is very much like a C or Java number, except that the octal
and hexadecimal formats are not used.
Whitespace can be inserted between any pair of tokens. Excepting
a few encoding details, that completely describes the language.
ActionScript:
ColdFusion:
FileMaker:.
JavaScript:
LotusScript:
Objective C:
PascalScript:
Photoshop:.
PowerShell:.
Visual Basic:
Visual FoxPro:该问题被发起重新开启投票
投票剩余时间:
之前被关闭原因:
该问题被发起删除投票
投票剩余时间:
距离悬赏到期还有:
参与关闭投票者:
关闭原因:
该问题已经被锁定
锁定原因:()
保护原因:避免来自新用户不合宜或无意义的致谢、跟帖答案。
该问题已成功删除,仅对您可见,其他人不能够查看。
public class JsonUtil {
private static SimpleDateFormat simpleDateFormat = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
* 从一个JSON 对象字符格式中得到一个java对象
* @param jsonString
* @param pojoCalss
public static Object getObject4JsonString(String jsonString, Class pojoCalss) {
JSONObject jsonObject = JSONObject.fromObject(jsonString);
pojo = JSONObject.toBean(jsonObject, pojoCalss);
* 从json HASH表达式中获取一个map,改map支持嵌套功能
* @param jsonString
public static Map getMap4Json(String jsonString) {
JSONObject jsonObject = JSONObject.fromObject(jsonString);
Iterator keyIter = jsonObject.keys();
Map valueMap = new HashMap();
while (keyIter.hasNext()) {
key = (String) keyIter.next();
value = jsonObject.get(key);
valueMap.put(key, value);
return valueM
* 将一个java对象转换为object对象
* @param object
* @author:shizhongwen
public static Map getMap4Object(Object object) {
String josn = getJsonString4JavaPOJO(object);
return getMap4Json(josn);
* 从json数组中得到相应java数组
* @param jsonString
public static Object[] getObjectArray4Json(String jsonString) {
JSONArray jsonArray = JSONArray.fromObject(jsonString);
return jsonArray.toArray();
* 从json对象集合表达式中得到一个java对象列表
* @param jsonString
* @param pojoClass
public static List getList4Json(String jsonString, Class pojoClass) {
JSONArray jsonArray = JSONArray.fromObject(jsonString);
JSONObject jsonO
Object pojoV
List list = new ArrayList();
for (int i = 0; i & jsonArray.size(); i++) {
jsonObject = jsonArray.getJSONObject(i);
pojoValue = JSONObject.toBean(jsonObject, pojoClass);
list.add(pojoValue);
* 从json数组中解析出java字符串数组
* @param jsonString
public static String[] getStringArray4Json(String jsonString) {
JSONArray jsonArray = JSONArray.fromObject(jsonString);
String[] stringArray = new String[jsonArray.size()];
for (int i = 0; i & jsonArray.size(); i++) {
stringArray[i] = jsonArray.getString(i);
return stringA
* 从json数组中解析出javaLong型对象数组
* @param jsonString
public static Long[] getLongArray4Json(String jsonString) {
JSONArray jsonArray = JSONArray.fromObject(jsonString);
Long[] longArray = new Long[jsonArray.size()];
for (int i = 0; i & jsonArray.size(); i++) {
longArray[i] = jsonArray.getLong(i);
return longA
* 从json数组中解析出java Integer型对象数组
* @param jsonString
public static Integer[] getIntegerArray4Json(String jsonString) {
JSONArray jsonArray = JSONArray.fromObject(jsonString);
Integer[] integerArray = new Integer[jsonArray.size()];
for (int i = 0; i & jsonArray.size(); i++) {
integerArray[i] = jsonArray.getInt(i);
return integerA
* 从json数组中解析出java Integer型对象数组
* @param jsonString
public static Double[] getDoubleArray4Json(String jsonString) {
JSONArray jsonArray = JSONArray.fromObject(jsonString);
Double[] doubleArray = new Double[jsonArray.size()];
for (int i = 0; i & jsonArray.size(); i++) {
doubleArray[i] = jsonArray.getDouble(i);
return doubleA
* 将java对象转换成json字符串
* @param javaObj
public static String getJsonString4JavaPOJO(Object javaObj) {
json = JSONObject.fromObject(javaObj);
return json.toString();
public static String getJsonString4JavaArray(Object[] objects) {
JSONArray jsonA
jsonArray = JSONArray.fromObject(objects);
return jsonArray.toString();
* 将java对象转换成json字符串,并设定日期格式
* @param javaObj
* @param dataFormat
public static String getJsonString4JavaPOJO(Object javaObj,
String dataFormat) {
JsonConfig jsonConfig = configJson(dataFormat);
json = JSONObject.fromObject(javaObj, jsonConfig);
return json.toString();
* JSON 时间解析器具
* @param datePattern
public static JsonConfig configJson(String datePattern) {
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setExcludes(new String[] { "" });
jsonConfig.setIgnoreDefaultExcludes(false);
jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
jsonConfig.registerJsonValueProcessor(Date.class,
new JsonDateValueProcessor(datePattern));
return jsonC
* 除去不想生成的字段(特别适合去掉级联的对象)+时间转换
* @param excludes
除去不想生成的字段
* @param datePattern
public static JsonConfig configJson(String[] excludes, String datePattern) {
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setExcludes(excludes);
jsonConfig.setIgnoreDefaultExcludes(true);
jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
jsonConfig.registerJsonValueProcessor(Date.class,
new JsonDateValueProcessor(datePattern));
return jsonC
* 根据LIST,和总数向页面打印列表数据
* @param response
* @param list
* @param count
* @author:weijiyong
public static void returnJsonListData(HttpServletResponse response,
List list, int count, String name) {
// String key="";
// if (name==null) {
// key="jsonRoleList";
// }else {
Map&String, Object& mapJson = new Hashtable&String, Object&();
mapJson.put("total", count);
mapJson.put("rows", list);
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.registerJsonValueProcessor(Date.class,
new JsonDateValueProcessor("yyyy-MM-dd hh:mm:ss"));
JSONObject jsonObject = JSONObject.fromObject(mapJson, jsonConfig);
// ActionContext actionContext = ActionContext.getContext();
// actionContext.getValueStack().set(key, jsonObject);
System.out.print(jsonObject);
PrintWriter out =
out = response.getWriter();
} catch (IOException e) {
e.printStackTrace();
out.print(jsonObject);
out.close();
* 向页面回去data字符串
* @param response
* @param data
* @author:weijiyong
public static void returnJsonStringData(HttpServletResponse response,
String data) {
PrintWriter out =
out = response.getWriter();
} catch (IOException e) {
e.printStackTrace();
out.write(data);
out.close();
* 将list转换为json字符串
* @param list
* @author:weijiyong
public static String getJsonArray4JavaList(List list) {
JSONArray jsonA
jsonArray = JSONArray.fromObject(list);
String jsonArrayStr = jsonArray.toString();
jsonArrayStr = jsonArrayStr.substring(jsonArrayStr.indexOf("["));
return jsonArray.toString();
public class JsonDateValueProcessor implements JsonValueProcessor {
private String format = "yyyy-MM-dd HH:mm:ss";
public JsonDateValueProcessor() {
public JsonDateValueProcessor(String format) {
this.format =
public Object processArrayValue(Object value, JsonConfig jsonConfig) {
String[] obj = {};
if (value instanceof Date[]) {
SimpleDateFormat sf = new SimpleDateFormat(format);
Date[] dates = (Date[])
obj = new String[dates.length];
for (int i = 0; i & dates. i++) {
obj[i] = sf.format(dates[i]);
public Object processObjectValue(String key, Object value,
JsonConfig jsonConfig) {
if (value instanceof Date) {
String str = new SimpleDateFormat(format).format((Date) value);
return value == null ? null : value.toString();
public String getFormat() {
public void setFormat(String format) {
this.format =
需要这样的一个jar包,json-lib-2.1.jar。运行可能会报错,可能还要添加一个这样的jar包ezmorph-1.0.3.jar。
// 拼接 jsonJSONArray array = new JSONArray();for (i = 0; i & list.size(); i++) {
JSONObject obj = new JSONObject();
obj.put("data1", list.get(i).get("date1"));
obj.put("data2", list.get(i).get("data2"));
obj.put("data3", list.get(i).get("data3"));
} catch (JSONException e) {
e.printStackTrace();
array.put(obj);}
如果还需要解析的话
JSONArray array = new JSONArray(jsonStrings);List&Map&String, String&& list = new ArrayList&Map&String, String&&();Map&String, String& map =try {
for (int i = 0; i & array.length(); i++) {
object = array.getJSONObject(i);
map = new HashMap&String, String&();
map.put("data1", object.getString("data1"));
map.put("data2", object.getString("data2"));
map.put("data3", object.getString("data3"));
list.add(map);
}} catch (JSONException e) {
e.printStackTrace();}
祝好,斑驳敬上
创建一个对象: var obj = {};需要添加什么数据,对该对象进行操作:obj["val1"]="hello";obj["val2"]="world";需要json字串时,用JSON.stringfiy(obj)获取。
不过JSON.stringfiy IE浏览器不支持,可通过调用json2.js来支持JSON对象。如果你仅做工具使用,这个问题可以忽略。
不是您所需,查看更多相关问题与答案
德问是一个专业的编程问答社区,请
后再提交答案
关注该问题的人
共被浏览 (7799) 次javascript(16)
使用的组件
前台组件:json2.js &来自&http://www.json.org/js.html
后台组件:json-lib-2.2.2-jdk15.jar
1 通过页面生成json对象列表,然后转换成字符串
// 生成json对象 转字符串
function makeTsJsonParam(){
var tsList = new Array();
var ts = {'tn_id':'','tn_trainSortie':'','tn_takeOffTime':'','tn_landingTime':'','tn_commander':'','tn_calendar':''};
var list1 = $(&.flightid&);
var list2 = $(&.tn_trainSortie&);
var list3 = $(&.tn_takeOffTime&);
var list4 = $(&.tn_landingTime&);
var list5 = $(&.tn_realityLandingTime&);
var list6 = $(&.tn_commander&);
var list7 = $(&.tn_mechanician&);
var list8 = $(&.tn_notes&);
var list9 = $(&.tn_calendar&);
//alert(list1.length);
for (var i=0;i&list1.i++)
ts.tn_id = list1[i].
ts.tn_trainSortie = list2[i].
ts.tn_takeOffTime = list3[i].
//alert(list3[i].value)
ts.tn_landingTime= list4[i].
ts.tn_realityLandingTime= list5[i].
ts.tn_commander= list6[i].
ts.tn_mechanician= list7[i].
ts.tn_notes= list8[i].
ts.tn_calendar= list9[i].
tsList[i] =
var str = JSON.stringify( tsList );
} 2 把处理过的Json字符串 提交给后台
把json字符串传递给后台
function saveAllTrainSortie(){
var str = makeTsJsonParam();
// alert(str)
var htmlStr = &-1&;
url:'../train/saveAllTrainFerrySortie.do',
//url:'${ctx}/index.jsp',
cache:false,
type:'post',
async:false,
dataType:'html',
trainSortieListStr:str,
contentType: &application/x-www-form-charset=utf-8&
success:function(html){
// alert(&html:&+html)
return htmlStr
if(htmlStr==1){
alert(&保存成功&);
}3 前台字符串转json对象
备注:json2 解析json字符时,需要&&,而不是‘’,否则解析会出错 ,如&pw.write(&[{\&label\&: \&蔡志高\&, \&value\&: \&czg\&}, {\&label\&: \&刘小磊\&, \&value\&: \&lxl\&}]&); &
var datas=JSON.parse(html);
alert(&html:&+datas.length) ;
1 把字符串解析成 java对象 &后处理。
public void saveAllTrainFerrySortie(HttpServletRequest request,HttpServletResponse response) {
String trainSortieListStr = request.getParameter(&trainSortieListStr&);
JSONArray array = JSONArray.fromObject(trainSortieListStr);
for(int i=0;i&array.size();i++){
Map ts=(Map)array.get(i);
String tn_id = &&+ts.get(&tn_id&);
String tn_trainSortie = &&+ts.get(&tn_trainSortie&);
String tn_takeOffTime = &&+ts.get(&tn_takeOffTime&);
String tn_landingTime = &&+ts.get(&tn_landingTime&);
// String tn_realityLandingTime = &&+ts.get(&tn_realityLandingTime&);
String tn_commander = &&+ts.get(&tn_commander&);
// String tn_mechanician = &&+ts.get(&tn_mechanician&);
// String tn_notes = &&+ts.get(&tn_notes&);
String tn_calendar = &&+ts.get(&tn_calendar&);
trainSoriteFerryService.saveTrainSortie(tn_id, tn_trainSortie, tn_takeOffTime,
tn_landingTime, tn_commander, tn_calendar);
response.setCharacterEncoding(&UTF-8&);
PrintWriter pw = response.getWriter();
pw.write(&1&);
pw.flush();
pw.close();
} catch (IOException e) {
e.printStackTrace();
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:58410次
积分:1419
积分:1419
排名:千里之外
原创:84篇
转载:20篇
评论:14条
阅读:5328
(1)(1)(2)(4)(2)(4)(3)(2)(8)(4)(17)(5)(1)(2)(1)(1)(2)(5)(8)(5)(7)(11)(1)(2)(4)(2)PHP数组传递给JavaScript以及json_encode的gbk中文乱码的解决 -常见问题-Php教程-壹聚教程网PHP数组传递给JavaScript以及json_encode的gbk中文乱码的解决
文章介绍了关于PHP数组传递给JavaScript以及json_encode的gbk中文乱码的解决 ,下面是创建JSON函数,这一段来自网上某一位大侠
/**************************************************************
*&&& 使用特定function对数组中所有元素做处理
*&&& @param&&& string&&& &$array&&&&&&& 要处理的字符串
*&&& @param&&& string&&& $function&&& 要执行的函数
*&&& @return boolean&&& $apply_to_keys_also&&&&&&& 是否也应用到key上
*&&& @access public
*************************************************************/
function arrayRecursive(&$array, $function, $apply_to_keys_also = false)
&&& foreach ($array as $key =& $value) {
&&&&&&& if (is_array($value)) {
&&&&&&&&&&& arrayRecursive($array[$key], $function, $apply_to_keys_also);
&&&&&&& } else {
&&&&&&&&&&& $array[$key] = $function($value);
&&&&&&& if ($apply_to_keys_also && is_string($key)) {
&&&&&&&&&&& $new_key = $function($key);
&&&&&&&&&&& if ($new_key != $key) {
&&&&&&&&&&&&&&& $array[$new_key] = $array[$key];
&&&&&&&&&&&&&&& unset($array[$key]);
&&&&&&&&&&& }
/**************************************************************
*&&& 将数组转换为JSON字符串(兼容中文)
*&&& @param&&& array&&& $array&&&&&&& 要转换的数组
*&&& @return string&&&&&&& 转换得到的json字符串
*&&& @access public
*************************************************************/
function JSON($array) {
&&& arrayRecursive($array, 'urlencode', true);
&&& $json = json_encode($array);
&&& return urldecode($json);
连接数据库取值给数组$array1
$dbcnx = @mysql_connect ( &localhost&, &root&, &1234& );
if (! $dbcnx) {
&&& echo (&Unable to connect to the & . &database server at this time.&);
&&& exit ();
if (! @mysql_select_db ( &pms& )) {
&&& echo (&Unable to locate the joke & . &database at this time.&);
&&& exit ();
mysql_query ( &SET NAMES 'GB2312'& );
&&& $q=mysql_query(&select * from ability where ALV = 1&);
&&& while($row=mysql_fetch_array($q)){
&&&& $array1[] = $row[AName];
数组array1传递到JavaScript给数组ability1
&script type=&text/javascript& src=&JS/jquery-1.7.2.min.js&&&/script&
&script type=&text/javascript&&
var ability1=&?php echo JSON($array1);?&;
var a=eval(&ability1&);
alert(a[0]);
另一种json中文乱码解决方法
如果是中文的话就要注意了
在网上找到一种解决方法:
/* 处理json_encode中文乱码 */
$data = array ('game' =& '冰火国度', 'name' =& '刺之灵', 'country' =& '冰霜国', 'level' =& 45 );
echo json_encode ( $data );
echo &&br&&;
$newData = array ();
foreach ( $data as $key =& $value ) {
$newData [$key] = urlencode ( $value );
echo urldecode ( json_encode ( $newData ) );
后来请教了别人,还可以用base64编码,不过base64编码不可以放在URL中,百度是这样解释的:
标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的&/&和&+&字符变为形如&%XX&的形式,而这些&%&号在存入数据库时还需要再进行转换,因为ANSI SQL中已将&%&号用作通配符。
不过我的数据是要通过POST发送的,并不在HTTP 的head中,而在message-body里,所以不受影响。
json_encode 只能接受utf-8格式的数据
例如:'胥'经过json_encode处理后变为'u80e5',最终的json中中文部分被替换为unicode编码。我们要解决的就是将对象转换为json并保证对象内部的中文在json中仍然是以正常的中文出现,现在看来只使用json_encode是不能达到目的的。
  我的解决方法:先将类中的中文字段进行url编码(urlencode),然后再对对象进行json编码(jsonencode),最后url解码(urldecode)json,即最终的json,里面的中文依旧是那个中文!
测试代码如下:
class myClass {
public $item1 = 1;
public $item2 = '中文';
function to_json() {
//url编码,避免json_encode将中文转为unicode
$this-&item2 = urlencode($this-&item2);
$str_json = json_encode($this);
//url解码,转完json后将各属性返回,确保对象属性不变
$this-&item2 = urldecode($this-&item2);
return urldecode($str_json);
$c = new myClass();
echo json_encode($c);
echo '&br/&';
echo $c-&to_json();
echo '&br/&';
echo json_encode($c);
echo '&br/&';
echo json_encode('胥');
程序输出结果:
{&item1&:1,&item2&:&u4e2du6587&}
{&item1&:1,&item2&:&中文&}
{&item1&:1,&item2&:&u4e2du6587&}
注具可参考:http://www.111cn.net/phper/php/42865.htm
上一页: &&&&&下一页:相关内容json传输数据时的nullpointerexception
个人认为android开发中遇到的最常见也是比较不容易解决的一类问题就是nullpointerexception即空指针异常,这类问题往往编译的时候是可以通过的,运行程序后会暴露出来,进而使程序崩溃,想寻找是哪里出现了问题,在代码中也不太容易focus,个人觉得解决这一类问题只能是凭借 细心+经验;
之前博主在用json传送数据的时候遇到了这样的问题,仔细查找和各种debug之后,发现了原因,例如我要以json格式从读取数据,以key-value的形式,这时候我当然要在程序中定义一些变量以便接受数据,下面需要注意了,并不是定义的变量类型与传送的数据类型一致就万事大吉了,如果数据库表中的该字段的数据会有null的时候,就是为空的时候,而定义变量的时候又没有赋初值,就会出现空指针异常的错误,如果想清楚了原因解决方式当然很简单;
就是如果数据库表中该字段下的数据有NULL的情形,在定义接收数据的变量的时候就一定要给该变量初始化。
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'

我要回帖

更多关于 webservice json传递 的文章

 

随机推荐