繁体   English   中英

如何从C#中的json获取键名及其值,而其值也以一对键值形式存在

[英]How to get key name and its value whereas its value in also in the pair of key value form from json in C#

我正在像这样的JObject格式获得响应。

        JObject response = JObject.Parse(account);

       {
        "status": 1,
        "msg": "1 out of 1 Transactions Fetched Successfully",
        "transaction_details": {
           "ae6df74457a7cbf62caf": {
           "mihpayid": "403993715518647003",
           "request_id": "",
           "bank_ref_num": "201833147408756",
           "amt": "88.00",
           "transaction_amount": "88.00",
           "txnid": "ae6df74457a7cbf62caf",
           "additional_charges": "0.00",
           "Settled_At": "0000-00-00 00:00:00"
         }
       }
     }

现在,该值(“ ae6df74457a7cbf62caf”)的“ transaction_details”迅速更改了每个事务,因此,我如何获取该值,之后如何获取C#中的“ mihpayid”键值。

您需要创建一个类来表示要返回的JSON。 对象的transaction_details部分可以表示为Dictionary ,例如:

class Account
{
    public int Status { get; set; }
    public string Msg { get; set; }

    public Dictionary<string, TransactionDetails> transaction_details { get; set; }
}

class TransactionDetails
{
    public string mihpayid { get; set; }
    public string requestid { get; set; }
    public string bank_ref_num { get; set; }
    public string amt { get; set; }
    public string transaction_amount { get; set; }
    public string txnid { get; set; }
    public string additional_charges { get; set; }
    public string Settled_At { get; set; }
}

而且,而是采用JObject.Parse(...)使用JsonConvert.DeserializeObject到JSON转换成你的C#类:

var myData = JsonConvert.DeserializeObject<Account>(account);

现在,您可以使用myData对象引用JSON的所有属性。

您可以遍历transaction_details读取每个条目。

foreach(var item in myData.transaction_details)
{
    var id = item.Key;

    var transaction = item.Value;
    var mihpayid = transaction.mihpayid;
}

for循环中变量的值是:

id =每个交易的唯一ID,即“ ae6df74457a7cbf62caf”

transaction =具有唯一交易中所有值的Transaction对象

mihpayid =唯一交易中的mihpayid,即“ 403993715518647003”

JObject response = JObject.Parse("{\r\n        \"status\": 1,\r\n        \"msg\": \"1 out of 1 Transactions Fetched Successfully\",\r\n        \"transaction_details\": {\r\n           \"ae6df74457a7cbf62caf\": {\r\n           \"mihpayid\": \"403993715518647003\",\r\n           \"request_id\": \"\",\r\n           \"bank_ref_num\": \"201833147408756\",\r\n           \"amt\": \"88.00\",\r\n           \"transaction_amount\": \"88.00\",\r\n           \"txnid\": \"ae6df74457a7cbf62caf\",\r\n           \"additional_charges\": \"0.00\",\r\n           \"Settled_At\": \"0000-00-00 00:00:00\"\r\n         }\r\n       }\r\n     }");     

        JObject transaction = JObject.Parse(response["transaction_details"].ToString());
        foreach(var token in transaction.Properties()) 
        {
            var rapidlyChangingId = token.Name;
            Console.WriteLine("Rapidly Changing ID: " + rapidlyChangingId);
            Console.WriteLine(transaction[rapidlyChangingId]);
        }

输出:

Rapidly Changing ID: ae6df74457a7cbf62caf { "mihpayid": "403993715518647003", "request_id": "", "bank_ref_num": "201833147408756", "amt": "88.00", "transaction_amount": "88.00", "txnid": "ae6df74457a7cbf62caf", "additional_charges": "0.00", "Settled_At": "0000-00-00 00:00:00" }

您可以使用JObject并将其转换为C#对象。 这样的事情: 如何将JObject反序列化为.NET对象

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM