好吧我的问题同样是: 我正在实施一个加密支付网关, 我将所有参数连同 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.
}
据我所知,您只是在尝试处理 JSON 数据。
对于 C#,您有两个主要选项,可能还有其他选项。我过去都用过。
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 结构。