Action 参数接收整理, 用 dynamic 类型接收json数据

json 转 dynamic

dynamic dynamicObj = JsonConvert.DeserializeObject<dynamic>(jsondata);
var data = dynamicObj.data;//data.msg;
int code = dynamicObj.code

model 转json

string json = JsonConvert.SerializeObject(new
            {
                a = a,
                b = b});
            

1.Action接收json对象

public ActionResult AddGoodsForList(List_Model listModel, List<GoodsModel> goodsModelList, int gs_price_use = 0){
        /* 注意:
        1. Content-Type: application/json; charset=utf-8 // charset=utf-8可省,

        2.接受参数名必须匹配 对象最外层属性名称,不能直接model整体接收(不能TestModel model )。如 listModel,goodsModelList,gs_price_use 为接受对象中
          {'gs_price_use':'0','goodsModelList':[{'number':'1','gs_no':'G00000002','gs_name':'111','duty_type':'增值税发票','gs_price':0},{'number':'1','gs_no':'G00000002','gs_name':'111','duty_type':'增值税发票','gs_price':0}],'listModel':{'ls_no':'1202','st_no':'01','list_no':'XS01201906000042'},'comid':'52'}

        */

 }

2.Action接收非json参数 //a=1&b=2   //Content-Type:text/html; charset=utf-8

  2.1 可直接用含有参数属性的TestModel 直接接收,实例名任意

public ActionResult Demo(TestModel model)
{
}
  2.2 可直接设定参数接收
public ActionResult Demo(int a,string b)
{
}

  2.3 接受列表方法:

public ActionResult SubmitCartItem(CartModel model)

 

3.用 dynamic 类型接收json数据

public class XunKuModel
    {
        public int state = -1;
        public string message ="";
        public dynamic data ="";
    }

string rst = "{\"data\":{\"UserID\":5615,\"Status\":1,\"Message\":\"登录成功\",\"Token\":\"336c2ce2-f810-4ba6-9049-31f5a78ae5d0\"},\"message\":\"\",\"state\":0}";

XunKuModel model = JLLib.JsonHelper.GetObjByJson<XunKuModel>(rst);

if(model.state==0)
                {
                    var lmodel = model.data;
                    if(lmodel["Message"]=="登录成功")
                    {

                        //if (IsPropertyExist(lmodel,"Token"))//判断存在
                        string Token = lmodel["Token"];
                        string UserID = lmodel["UserID"].ToString();
                    }
                }

 

4.微信利用小程序js_code获取openid

string url = "https://api.weixin.qq.com/sns/jscode2session?appid="+AppConst.AppId+"&secret="+AppConst.AppSecret+"&js_code="+js_code+"&grant_type=authorization_code";
            string data = WebHelper.GetRequestData(url,"");
            dynamic d = JsonHelper.GetObjByJson<dynamic>(data);
            string session_key = "";
            string expires_in = "";
            string openid = "";
            if (IsPropertyExist(d,"session_key"))
                session_key = d["session_key"];
            if (IsPropertyExist(d,"expires_in"))
                expires_in = d["expires_in"];
            if (IsPropertyExist(d,"openid"))
                openid = d["openid"];

 

5.谷歌浏览器Console 测试脚本 ajaxPostJson为自己封装执行ajax

var data ={'gs_price_use':'0','goodsModelList':[{'number':'1','gs_no':'G00000002','gs_name':'111','duty_type':'增值税发票','gs_price':0},{'number':'1','gs_no':'G00000002','gs_name':'111','duty_type':'增值税发票','gs_price':0}],'listModel':{'ls_no':'1202','st_no':'01','list_no':'XS01201906000042'},'comid':'52'};ajaxPostJson("/AppApi/AddGoodsForList",JSON.stringify(data),function(res){console.log(JSON.stringify(res));});

 

function ajaxPostJson(url, dataMap, fnSuccess) {
    try {
        $.ajax({
            type: "POST",
            url: url,
            data: dataMap,
            contentType: 'application/json',
            beforeSend: function () { zzc.show(); },
            complete: function () { zzc.hide(); },
            success: function (data, textStatus, jqXHR) {
                var res = {};
                var err = jqXHR.getResponseHeader("JLBerror");
                if (err != null) {
                    res.state = "error";
                    res.content = decodeURI(err);
                    data = JSON.stringify(res);
                }
                fnSuccess(data);
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                zzc.hide();
                showMsg("出错了!状态码:" + XMLHttpRequest.status);
            }
        });
    } catch (e) {
        zzc.hide();
        showMsg(e.message);
    }
}

function ajaxPost(url, dataMap, fnSuccess) {
    try {
        $.ajax({
            type: "POST",
            url: url,
            data: dataMap,
            beforeSend: function () { zzc.show(); },
            complete: function () { zzc.hide(); },
            success: function (data, textStatus, jqXHR) {
                var res = {};
                var err = jqXHR.getResponseHeader("JLBerror");
                if (err != null) {
                    res.state = "error";
                    res.content = decodeURI(err);
                    data = JSON.stringify(res);
                }
                fnSuccess(data);
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                zzc.hide();
                showMsg("出错了!状态码:" + XMLHttpRequest.status);
            }
        });
    } catch (e) {
        zzc.hide();
        showMsg(e.message);
    }
}

 

//android post json:

MediaType JSON=MediaType.parse("application/json; charset=utf-8");

RequestBody requestBody = RequestBody.create(JSON, json);

Request request = new Request.Builder()

.url("http://192.168.0.102:8080/TestProject/JsonServlet")

.post(requestBody)

.build();

Response response=okHttpClient.newCall(request).execute();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值