在C#中获取JSON POST数据

3

我是C#的新手。
如何获取JSON POST数据? 我有一个向我的asp.net POST JSON数据的服务。

以下是数据:

{
   "transaction_time": "2017-09-18 09:47:54",
   "transaction_status": "capture",
   "transaction_id": "b7c8cfa9-b706-4a9d-b70d-8d70149145bd",
   "status_message": "Veritrans payment notification",
   "status_code": "200",
   "signature_key": "b22b5740bf2c587ba949ae5343757a66e5a75c45b9377b9ee891909bbd8977bb2caea8e0549bf09b5040b22f54efc76aa8beb31e321f9d600f267b23f37b30ae",
   "payment_type": "credit_card",
   "order_id": "LUHUMMLWOT",
   "masked_card": "401111-1112",
   "gross_amount": "326000.00",
   "fraud_status": "accept",
   "bank": "mandiri",
   "approval_code": "1505702878234"
 }

据我所知,我可以使用WebMethod捕获所有数据,创建一个方法,然后初始化每个JSON对象的参数,但是每次提交,它们发送不同的JSON。因此,我必须动态获取所有JSON并将其解析为变量。
请帮忙:)
谢谢~

你的意思是“如何在C#代码函数中获取JSON POST数据”吗? - Souvik Ghosh
你尝试过使用 JsonConvert.DeserializeObject(yourJson) 吗?你需要在代码中包含 using Newtonsoft.Json; 语句。 - Hayden Passmore
是的@souvik,我不知道如何在asp.net的代码后台获取JSON POST数据。 - Raissa Ditya Putri
1
请查看以下链接- https://forums.asp.net/t/2097621.aspx?Passing+Json+Object+to+codebehind+in+c+ 和 http://www.c-sharpcorner.com/UploadFile/dacca2/understand-jquery-ajax-function-call-code-behind-C-Sharp-method/。它们提供了逐步详细的说明。 - Souvik Ghosh
那么,你迄今为止做了什么? - Mehdi Dehghani
4个回答

1

如果您不知道Json内容是什么,就必须在动态对象中解析Json。

您可以像这样使用动态对象。

dynamic data = Json.Decode(json);

在你的情况下,你可以像这样获取数据。
string transaction_time=data.transaction_time;

1
   **Pleas do it step by step as below
    in Your Asp.net Java script using**



var yourPostJsonObject={
   "transaction_time": "2017-09-18 09:47:54",
   "transaction_status": "capture",
   "transaction_id": "b7c8cfa9-b706-4a9d-b70d-8d70149145bd",
   "status_message": "Veritrans payment notification",
   "status_code": "200",
   "signature_key": "b22b5740bf2c587ba949ae5343757a66e5a75c45b9377b9ee891909bbd8977bb2caea8e0549bf09b5040b22f54efc76aa8beb31e321f9d600f267b23f37b30ae",
   "payment_type": "credit_card",
   "order_id": "LUHUMMLWOT",
   "masked_card": "401111-1112",
   "gross_amount": "326000.00",
   "fraud_status": "accept",
   "bank": "mandiri",
   "approval_code": "1505702878234"
 }


$.ajax({
                type: 'POST',
                dataType: 'json',
                cache: false,
                url: 'SendTransaction', // webmethod or web serivces URL
                data: {jsonReceiverInCsharpObjecName:JSON.stringify(yourPostJsonObject)},
                success: function (response) {
                   alert('scucess')
                },
                error: function (jqXHR, textStatus, errorThrown) {
                    alert('Error - ' + errorThrown);
                }
            });

在Asp.net的代码后台或者Web服务中。
using Newtonsoft.Json;
using System.Dynamic;
using Newtonsoft.Json.Converters;

public bool SendTransaction(string jsonReceiverInCsharpObjecName)
 {
   dynamic dynData =JsonConvert.DeserializeObject<ExpandoObject>
   (jsonReceiverInCsharpObjecName, new ExpandoObjectConverter());

foreach (KeyValuePair<string, object> transItem in dynData 
{
   if (transItem.Key == "transaction_time")
   var transaction_time = Convert.ToString(transItem.Value);
   else if (transItem.Key == "transaction_status")
   var transaction_status = Convert.ToString(transItem.Value);
   else if (transItem.Key == "transaction_id")
   var transaction_ido = Convert.ToString(transItem.Value);
   //else
   //do for rest attribute of your json data
 }

return true;
 }

这段 C# 代码毫无意义,你从哪里提取了请求中的 JSON 数据? - Darth Scitus

0
你也可以使用对象代替动态类型,然后使用反射获取 JSON 对象中的所有属性,我可以给你一个通用的代码示例,你可以搜索 Reflection 以获得更多的了解。
public void GetData(object obj)
{
    foreach(var item in obj.GetType().GetProperties())
    {
         Console.WriteLine(item.Name + ":\t" + item.GetValue(obj));
    }
} 

您可以按照自己的方式使用它


-1

使用C#发布

var client = new RestClient("http://localhost:8080/api/subject");
var request = new RestRequest(Method.POST);

request.AddHeader("cache-control", "no-cache");
request.AddHeader("content-type", "application/json");

request.AddParameter("application/json", "{\n        \"author\": "Balu\",\n        \"title\": \"Post using C#\"}", ParameterType.RequestBody);

IRestResponse response = client.Execute(request);

2
不,我的意思是如何获取JSON POST数据,而不是将JSON数据POST到C#。 - Raissa Ditya Putri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接