webservice服务 json格式

http://localhost:52327/ECA_Service.asmx/Get_BlockSupervisionFile?param={ "userid":"1433","userpwd":"123456"}

现在需要写一个webservice服务,但是在调用服务的时候需要用以上链接的格式调用(传递的是json格式的对象)。

如果只是写webservice服务,不限定调用时的格式,我能写。现在需要写成这种格式就不知道怎么写了。

请教大神给思路。
如有描述不清楚的,再补充。

回答: webservice服务 json格式

  1. 我建议你跑去看看“调用服务”的人会不会写代码、会不会调用webservice是传递各种参数。别弄得一个外行给你出了一个错误的 url 设计,等你实现了以后,他有告诉你“根本不知道怎样发出请求、获取结果”。

请问如何利用vs2008/2010/2012的webservice设计输出json格式,运行asmx时,调用按钮后始终是xml格式输出

  1. Q
    请问如何利用vs2008/2010/2012的webservice设计输出json格式,运行asmx时,调用按钮后始终是xml格式输出。
  2. A

    你到底是要xml还是json,还是要做json->xml的转换?

    要输出json ,客户需要接收json数据

    你要搞清webservice是啥

    webservice 协议内容是什么时候 肯定一直是XML输出。
    你要json那就直接用Response.Write输出。

    我是想着vs有办法可以快速的把这些数据直接输出成json

    生成网页你总会吧? 要不会就没得说了要会
    直接调用VS提供的生成Json的类然后用Response.Write输出就是了。

    http://www.cnblogs.com/zoyobar/archive/2011/09/29/JE_12.html 这个的第一个列子就是

(Ext)从后台查询出的Json格式数据在Ext前端不能显示

  1. Q
    刚接触Ext不久,现要用Ext Grid的分页,但是从后台取出的Json数据在js里就是不显示。帮忙看下

    我的这个账号是刚注册的 没多少分了 都压上了

    代码如下:

    js代码:

    var cm_sub_user = new Ext.grid.ColumnModel([new Ext.grid.RowNumberer(), {
    header : '手机号码',
    width : 150,
    dataIndex : 'mobile',
    sortable : true
    },{
    header : '机主名',
    width : 100,
    dataIndex : 'owner',
    sortable : true
    }, {
    header : '城市编号',
    width : 100,
    dataIndex : 'city_code',
    sortable : true
    }, {
    header : '软件版本号',
    width : 100,
    dataIndex : 'ver',
    sortable : true
    }, {
    header : '服务地址',
    width : 200,
    dataIndex : 'svc1',
    sortable : true
    }, {
    header : '创建日期',
    id : 'create_date',
             dataIndex : 'create_date',
             renderer : Ext.util.Format.dateRenderer('m/d/Y H:i:s'),
    sortable : true
    }]);

    cm_sub_user.defaultSortable = true;

    var text_search_company = new Ext.form.TextField({
    name : 'pageData.userMobile',
    width : 200,
    emptyText : '请输入手机号码查询!',
    listeners : {
    'specialkey' : function(field, e) {
    if (e.getKey() == Ext.EventObject.ENTER) {
    searchCompany();
    }
    }
    }
    });

    // grid的查找方法
    var searchCompany = function() {
    ds_sub_user.load({params : {start : 0, limit : 20}});
    };

    var btn_search_company = new Ext.Button({
    text : '查询',
    iconCls : 'icon-search',
    handler : searchCompany
    });

    var ds_sub_user = new Ext.data.Store({
    proxy : new Ext.data.HttpProxy({
    url : 'UserManageAction_findSubUserByPageCondition.action'
    }),
    reader : new Ext.data.JsonReader({
    totalProperty : 'totalProperty',
    root : 'jsonOperatorList'
    }, [{
    name : 'mobile',
    type : 'string'
    }, {
    name : 'owner',
    type : 'string'
    }, {
    name : 'city_code',
    type : 'string'
    }, {
    name : 'ver',
    type : 'string'
    }, {
    name : 'svc1',
    type : 'string'
    }, {
    name : 'create_date',
    type : 'date',  
            dateFormat : 'Y-m-d H:i:s'
    }])
    });

    var grid_sub_user = new Ext.grid.EditorGridPanel({
    title : '终端用户管理',
    iconCls : 'icon-grid',
    loadMask : {msg : '数据加载中...'},
    region : 'center',
    cm : cm_sub_user,
    ds : ds_sub_user,
    sm : new Ext.grid.RowSelectionModel({singleSelect : true}),
    enableColumnMove : false,
    trackMouseOver : false,
    frame : true,
    autoExpandColumn : 'create_date',
    clicksToEdit : 1,
    tbar : [text_search_company, btn_search_company],
    bbar : new Ext.PagingToolbar({
    pageSize : 20,
    store : ds_sub_user,
    displayInfo : true,
    displayMsg : '第 {0} - {1} 条  共 {2} 条',
    emptyMsg : "没有记录"
    })
    });


    具体后台Json的格式是什么样子的?

    我后台的json格式是这样的:

    {totalProperty=2, jsonOperatorList=[{"mobile":"15094304697","password":"123456","owner":"服务器","city_code":"025","ver":"3.0","svc1":"www.baidu.com","svc2":null,"plat_md5":"12","plat_no":"15852020123","call_no1":"15852320458","call_no2":null,"call_no3":null,"call_no4":null,"shd_md5":"12","shd_conf_status":"1","all_md5":"123456","create_date":"2010-08-16 00:00:00","rn":1},{"mobile":"15852324369","password":"100000","owner":"交换机","city_code":"025","ver":"0.8","svc1":"www.google.cn","svc2":null,"plat_md5":"12","plat_no":"15094320157","call_no1":"15623015483","call_no2":null,"call_no3":null,"call_no4":null,"shd_md5":"34","shd_conf_status":"2","all_md5":"158231","create_date":"2010-08-16 00:00:00","rn":2}]}
  2. A
    你的json字符串有问题。你这里都是totalProperty=2, jsonOperatorList=。。“=”号。这是不行的。。
    你应该是这样
    {"totalProperty":2, "jsonOperatorList":[{"mobile":"15094304697","password":"123456","owner":"服务器","city_code":"025","ver":"3.0","svc1":"www.baidu.com","svc2":null,"plat_md5":"12","plat_no":"15852020123","call_no1":"15852320458","call_no2":null,"call_no3":null,"call_no4":null,"shd_md5":"12","shd_conf_status":"1","all_md5":"123456","create_date":"2010-08-16 00:00:00","rn":1},{"mobile":"15852324369","password":"100000","owner":"交换机","city_code":"025","ver":"0.8","svc1":"www.google.cn","svc2":null,"plat_md5":"12","plat_no":"15094320157","call_no1":"15623015483","call_no2":null,"call_no3":null,"call_no4":null,"shd_md5":"34","shd_conf_status":"2","all_md5":"158231","create_date":"2010-08-16 00:00:00","rn":2}]} 
    

qt 如何使用JSON格式与web通信

  1. Q
    想跟web<非本地的>进行数据交互,找了些资料,说使用QNetworkAccessManager,我试了下,可以下载,但是我如果发送数据到web呢?数据格式是字符串,我看了下说使用request.get,那么我的数据应该怎么组成啊?
  2. A
    一般我们发送的数据都是包含在你请求的url里面的,
    比如:http://xxpxg.fwxgx.com/g_list.aspx?region_name=%1&region_area=%2
    示例代码:
    QString url = "http://xxpxg.fwxgx.com/g_list.aspx?region_name=%1&region_area=%2";
        QNetworkRequest request;
        request.setUrl(QUrl(url l));
        m_reply = m_pNetWorkAccMananger->get(request);
        connect(m_reply, SIGNAL(readyRead()), this, SLOT(slotGetUserInof()));
    其中m_reply是QNetworkReply对象,
    在slotGetUserInof槽中,使用m_reply->readAll()就能得到响应的所有数据了。
    这样你就跟web进行数据交互了,
    而http://xxpxg.fwxgx.com/g_list.aspx?region_name=%1&region_area=%2这url一般称为
    web为你提供的接口。
    而你说的发送json格式的字符串,可以直接放到提供接口的地方就可以了,比如%1这个位置或%2这个位置,服务端直接使用JSON来解析就好了。

(求助)WebService服务端口无法打开。TCP错误代码10061:由于目标计算机积极拒绝,无法链接

  1. Q
    求助,,,项目部署的WebService服务突然无法连接了。8082端口。
    这是netstat的结果
    (求助)WebService服务端口无法打开。TCP错误代码10061:由于目标计算机积极拒绝,无法链接


    这是telnet 8082的结果
    (求助)WebService服务端口无法打开。TCP错误代码10061:由于目标计算机积极拒绝,无法链接


    不排除是因为防火墙,杀毒软件的影响,但是没找到哪里限制了这个。
  2. A
    想知道是不是防火墙的原因,你在服务器本地去访问,如果能访问到,那么就是防火墙阻止了其他机器访问

three.js导入json格式模型问题

  1. Q
    最近研究three.js的相关内容,导入模型一直用的是obj格式,后尝试使用json格式时,发现导入的模型没有了高光效果,不知道是什么原因,求指点
    var loader1= new THREE.BinaryLoader();
    var callbackLoad = function ( geometry , materials ) {
    loadModel( geometry , materials );
    }
    loader1.load( "bike/dipan_bin.js" , callbackLoad );
    这是载入json格式模型的源码。

    "metadata" :
        {
            "formatVersion" : 3.1,
            "sourceFile"    : "dipan.obj",
            "generatedBy"   : "OBJConverter",
            "vertices"      : 5074,
            "faces"         : 5133,
            "normals"       : 2475,
            "uvs"           : 5801,
            "materials"     : 1
        },

        "materials": [ {
    "DbgColor" : 15658734,
    "DbgIndex" : 0,
    "DbgName" : "03___Default",
    "colorAmbient" : [0.61180000000000001, 0.3725, 0.1176],
    "colorDiffuse" : [0.61180000000000001, 0.3725, 0.1176],
    "colorSpecular" : [0.71999999999999997, 0.71999999999999997, 0.71999999999999997],
    "illumination" : 2,
    "mapAmbient" : "tree.JPG",
    "mapDiffuse" : "tree.JPG",
    "opticalDensity" : 1.5,
    "specularCoef" : 50.0,
    "transparency" : 0.0
    }]
    这个是json格式数据
  2. A
    手动设置高光试一试

extjs表单提交后,数据打印后不是json格式

  1. Q
    前台数据{
                        id:'user_update',
                        text: '编辑',
                        maxWidth:55,
                        handler:function(){
                            var user_form = this.up('form');
                            if(user_form.getForm().isValid()){
                                user_form.getForm().submit({
    //                                url: 'updateUserServlet',
                                url:'MyJsp.jsp',
                               
                                    method:'post',
                                   
                                    submitEmptyText: false,
                                    waitTitle:'请等待',
                                    waitMsg: '正在编辑用户...',
                                    params : {
                                        id : userid,
                                        userName : userName,
                                        userPermiss : userPermiss,
                                        description : description,
                                        userPasswd : userPasswd
                                    },
                                   
                                    success:function(form,action){
                                        var response = Ext.decode(action.response.responseText);
                                        Ext.Msg.alert('提示', response.msg);
                                        userStore.load();
                                    },
                                    failure:function(form,action){
                                        Ext.Msg.alert('提示', '编辑用户失败!');
                                    }
                                });
                            }else{
                                Ext.Msg.alert('提示', '数据验证失败!');
                            }
                        }
                    }
    后台代码:<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ page import="java.io.BufferedReader" %>
    <%@ page import="net.sf.json.*" %>
    <%
    BufferedReader in=request.getReader();
    StringBuffer jsonStr=new StringBuffer();
    String str="";
    while((str=in.readLine())!=null){
    jsonStr.append(str);
    }
    JSONObject jsonObj= JSONObject.fromObject(jsonStr.toString());
    String name= jsonObj.getString("userName");

    String msg="";
    out.print("asdf");
    out.print(name);

    %>
    服务器报错为:严重: Servlet.service() for servlet jsp threw exception
    net.sf.json.JSONException: A JSONObject text must begin with '{' at character 1 of id=3&userName=yy&userPermiss=3&description=&userPasswd=usd1111
    经过打印后,得到的数据为id=3&userName=yy&userPermiss=3&description=&userPasswd=usd1111不是json格式,请问哪里有问题??
  2. A
    用最简单的方式啊,你的代码太复杂了
    		Enumeration<String> em=request.getParameterNames();
    		String pm="";
    		JSONObject jsonObj = new JSONObject();
    		while(em.hasMoreElements()){
    			pm = em.nextElement();
    			jsonObj.put(pm, request.getParameter(pm));
    		}
    		
    		String name= jsonObj.getString("userName");
    

json格式转换

  1. Q
    如果不用json lib来进行格式转换,有什么其他方法进行json格式转换不。我是用jQuery.ajax()请求Action,返回的是一个javabean,js不好处理,取不到bean的属性值。如果用json格式就方便多了。有没有什么通用的方法进行数据格式转换……
  2. A
    补充一下一楼的答案,http://code.google.com/p/google-gson,通过Gson对象,可以讲普通java对象转为json格式字符串,也可以将json格式字符串转为java对象,要求setter、getter齐全

stuts2生成的json格式问题

  1. Q
    我需要的json格式是 [{"total":"a","total2":"a2"}]

    但我用struts2生成的格式是 {"jsona":[{"total":"a","total2":"a2"}]}

    这个该怎么弄呢? 这个格式是用在easyui里面的
  2. A
    用这个:
    JSONArray array=new JSONArray();
    		JSONObject obj1=new JSONObject();
    		try {
    			obj1.put("total", "a");
    			obj1.put("tota2", "a2");
    			array.put(obj1);
    		} catch (JSONException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		System.out.println(array.toString());

    结果:
    [{"total":"a","tota2":"a2"}]
    []表示是一个json数组即JSONArray 、{}表示的是一个json对象即JSONObject

ajax访问后台,得到一个对象,我怎么以json格式返回到前台.

  1. Q
    ajax访问servlet,查询得到一个message对象,我怎么把这个对象以json的格式返回给前台,并显示在给定的div中。
    问题补充:zld406504302 写道jsonObject 将对象转换成json字符串 ,write出去;
    ajax 的回调函数中用eval 将json对象转成js对象


    我试了,不好用啊。总是获得不到啊,你可不可以给段代码,看看是不是我代码哪里写错了,我对jsonObject不熟,出错也不知道该在那里改。体谅下。

    问题补充:MartsonFan 写道先要对json格式进行了解,自己编程把得到的数据转换成json格式的string,例如:
    {"name":"Kobe","age":36,"Job":"player"}
    浏览器接收到这个string后,调用一下eval方法,就得到一个json对象了。
    我这样写了,可是,却怎么都走不到success里面去,哪里有问题呢?
  2. A
    public class JsonServlet extends HttpServlet {
    
    	private org.codehaus.jackson.map.ObjectMapper objectMapper = new org.codehaus.jackson.map.ObjectMapper();
    
    	@Override
    	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
    			throws ServletException, IOException {
    
    		resp.setContentType("application/json");
    
    		try {
    			User user = new User();
    			user.setId("1");
    			user.setName("user");
    			objectMapper.writeValue(resp.getOutputStream(), user);
    		} catch (Exception e) {
    			// TODO: handle exception
    		}
    
    	}
    
    	private static class User {
    
    		private String id;
    
    		private String name;
    
    		public String getId() {
    			return id;
    		}
    
    		public void setId(String id) {
    			this.id = id;
    		}
    
    		public String getName() {
    			return name;
    		}
    
    		public void setName(String name) {
    			this.name = name;
    		}
    
    	}
    }

    前台用jquery
    	$.post("", {}, function(user) {
    		alert(user.id, +" " + user.name);
    	}, "json");