如何读取从网关发送到我的 asp.net 页面(回调 url)的 JSON 数据

问题描述 投票:0回答:1

好吧我的问题同样是: 我正在实施一个加密支付网关, 我将所有参数连同 callbackurl(通知 url)一起发送。 付款后,它将以 json 格式发送通知。 我不知道如何在不知道向我的通知 url 发送通知的源 url 的情况下读取数据/解析数据。

同样的数据: {

“时间戳”:6716171771,

“随机数”:5635262,

“标志”:“dasjh1276312hjhdwwghhdsuy2128781291g2”,

“正文”:“{”地址“:”01HSXHSUSGNXSHGDSKJDASJ“,”金额“:”7917“,”blockHigh“:”17219“,”coinType“:”206“,”小数“:”8“,”费用“ :"452000","mainCoinType":"206","status":3,"tradeId":"20181024175416907","tradeType":1,"txId":"31689c332536b56a2246347e206fbed2d04d461a3d668c4c1de32a75a8 d436f0"}"

}

    string result_GET = null;
        string url = "https://mytestweb.com/notifypayment.aspx";
        // I don't know what URL we use here in case we don't know the source url, so this is my general practice for all gateways GET response.
        WebResponse response = null;
        StreamReader reader = null;

      

            HttpWebRequest httpWebRequest = null;
            httpWebRequest = HttpWebRequest.Create(url) as HttpWebRequest;
            httpWebRequest.Method = "GET";// Supports POST too


            var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
            using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
            {
                var get_json_data= streamReader.ReadToEnd();
                LabelJsonData.Text= get_json_data.ToString();
               
              //I want the json data here , so that I can parse it and use it then.

}

c# asp.net json get
1个回答
0
投票

据我所知,您只是在尝试处理 JSON 数据。

对于 C#,您有两个主要选项,可能还有其他选项。我过去都用过。

微软的:https://learn.microsoft.com/en-us/dotnet/standard/serialization/system-text-json/how-to?pivots=dotnet-8-0

NewtonSoft 之一:https://www.newtonsoft.com/json

除非您需要在 NewtonSoft 选项中找到的任何东西,否则最好使用 Microsoft 选项。那只是我的意见。两者都很好用,我都没有问题。这个建议的原因是微软是可用的一部分,你不需要使用任何额外的东西。

这是一些关于 JSON 的序列化/反序列化的信息,您可能会觉得有用:What is deserialize and serialize in JSON?

如果您知道 JSON 数据的结构(我想您知道),您可以创建一个类结构来将 JSON 反序列化为使用泛型。或者您可以在没有特定类结构的情况下使用来保存转换的 json。

我正在展示来自 (https://learn.microsoft.com/en-us/dotnet/standard/serialization/system-text-json/how-to?pivots=dotnet-7-0) 的 C# 7 相关代码

下面的例子是当你没有类结构时。

using System;
using System.Text.Json;

string jsonString = "{\"name\":\"John Doe\",\"age\":30}";

JsonDocument jsonDocument = JsonDocument.Parse(jsonString);

foreach (JsonProperty element in jsonDocument.RootElement.EnumerateObject())
{
    Console.WriteLine($"Property Name: {element.Name}");
    Console.WriteLine($"Property Value: {element.Value}");
}

另一种方法是使用像这样的类结构

假设你有这个类(匹配预期的 JSON)

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

JSON在哪里

{
    "name": "John Doe",
    "age": 30
}

你可以使用这个代码

using System.Text.Json;

string jsonString = "{\"name\":\"John Doe\",\"age\":30}";

Person person = JsonSerializer.Deserialize<Person>(jsonString);

Console.WriteLine(person.Name); // Output: John Doe
Console.WriteLine(person.Age); // Output: 30

在上面的代码示例中,

jsonString
将是
get_json_data.ToString()

显然,C# 类不适合您拥有的 JSON,并且只是说明性的。因此,您需要决定要使用哪种方法。类选项很好,但您需要编写适当的类来支持您自己的 JSON 结构。

© www.soinside.com 2019 - 2024. All rights reserved.