代码之家  ›  专栏  ›  技术社区  ›  user9130558

如何在c#mvc中将Json结果转换为Object

  •  2
  • user9130558  · 技术社区  · 7 年前

    我正在尝试将此响应转换为object,以便在c#mvc应用程序中使用object访问它们。

    以下是我所做的代码:

     var response = await client.GetAsync("ApiTest?Amount=" + Amount.ToString() + "&WalletAddress=" + WalletAddress.ToString() + "&TokenCode=" + TokenType.ToString());
    
    
    
    
                                            if (response.IsSuccessStatusCode)
                                            {
    
                              result = response.Content.ReadAsStringAsync().Result;
                              var test1 = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(result);
    (Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(result));
    
                                               result = await response.Content.ReadAsStringAsync();
                                               var obj =Newtonsoft.Json.JsonConvert.DeserializeObject(result);
                                                return Json(new { Message = "Your Transaction Has Been Completed Successfully!" }, JsonRequestBehavior.AllowGet);
    
                                            }
    

    以下是Json响应,但其格式为字符串:

    {“Error”:“交易金额必须大于 0,“结果”:null,“IsSuccess”:false,“HttpResponse”:{“Headers”:[{“Key”:“X-Frame-Options”,“Value”:[“sameorigin”]},{“Key”:“Strict Transport Security”,“Value”:[“max age=31536000”]},{“Key”:[“no cache”]},{“Key”:“Access Control Allow Origin”,“Value”:[“*”]},{“Key”:“Keep Alive”,“Value”:[“timeout=5,max=100”]},{“Key”:“Connection”,“Value”:[“Keep Alive”]},{“Keep Alive”}键“:”缓存控制“,”值“:[”无店铺, 必须重新验证,无缓存,后检查=0, 预检查=0“]},{“Key”:“Date”,“Value”:[“Wed,2018年2月28日09:43:57 GMT“]},{“Key”:“Set Cookie”,“Value”:[“PHPSESSID=3vbjmnpea9i9n871a8knc3s89q7lufpn; 路径=/;保护 HttpOnly”,“visid\u incap\u 992349=On7CIEXMQBq9AtX5/pvhqtp5lloaaaquipaaaaaacxll2z399yxat6ixztsol+; expires=2019年2月27日星期三14:49:04 GMT;路径=/; 域=。共同付款。净“,”incap\u ses\u 478\u 992349=pCsbJzCRvCFLbgPwODOiBtx5lloAAAAAR8gvl6uEmcAX0kCi3b/2Ig==; 路径=/; 域=。共同付款。net“]},{“Key”:“Server”,“Value”:[“Apache”]},{“Key”:“X-Iinfo”,“Value”:[“5-23697956-23698018 NNNN CT(1461 273 0)RT(15198110346 506)q(0 0 17 1)r(18 19) U6“]},{“Key”:“X-CDN”,“Value”:[“Incapsula”]}],“ContentBody”:“{\”error\“:\”事务 金额必须大于 “0\”,“result\”:[]},“StatusCode”:200,“IsSuccessStatusCode”:true,“RequestUri”: https://www.coinpayments.net/api.php “,”请求主体“:“cmd=create_transaction\u0026amount=0\u0026currency1=USD\u0026currency2=LTCT\u0026buyer_email=3Pt5ebwZsMWV2ij1bnFv1yJYk2155PGzGx\u0026version=1\u0026key=c84f65f198e77895f3edc08e7654379785f1057c7c7c0c6c615bee68371d558”

    任何帮助都将不胜感激> 谢谢

    2 回复  |  直到 7 年前
        1
  •  9
  •   FaizanHussainRabbani    7 年前

    您可以利用Visual Studio的粘贴特殊功能:

    复制JSON并特殊粘贴:

    enter image description here

    您将获得以下课程:

    public class JsonResponse
    {
        public string Error { get; set; }
        public object Result { get; set; }
        public bool IsSuccess { get; set; }
        public Httpresponse HttpResponse { get; set; }
    }
    
    public class Httpresponse
    {
        public Header[] Headers { get; set; }
        public string ContentBody { get; set; }
        public int StatusCode { get; set; }
        public bool IsSuccessStatusCode { get; set; }
        public string RequestUri { get; set; }
        public string RequestBody { get; set; }
    }
    
    public class Header
    {
        public string Key { get; set; }
        public string[] Value { get; set; }
    }
    

    现在只需利用Newtonsoft反序列化:

    var items = JsonConvert.DeserializeObject<JsonResponse>(json);  
    

    输出:

    enter image description here

        2
  •  0
  •   Miguel Domingues    7 年前

    尝试以下操作:

    using Newtonsoft.Json.Linq;
    ...
    var jso = JObject.Parse(content);
    string value = jso["propertyname"].Value<string>();