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

C# 如何从C中的json中获取键名及其值,而其值也以键值对形式存在#,c#,json,C#,Json,我得到的回应是这样的JObject格式 JObject response = JObject.Parse(account); { "status": 1, "msg": "1 out of 1 Transactions Fetched Successfully", "transaction_details": { "ae6df74457a7cbf62caf": { "mih

我得到的回应是这样的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"
         }
       }
     }

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

您可以使用JObject并将其转换为C#object。大概是这样的:
您需要创建一个类来表示返回的JSON。 对象的
事务\u详细信息
部分可以表示为
字典
,例如:

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; }
}
现在可以使用
myData
对象引用JSON的所有属性

您可以循环查看
事务\u详细信息
读取每个条目

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

    var transaction = item.Value;
    var mihpayid = transaction.mihpayid;
}
for循环中变量的值为:

id
=每个事务的唯一id,即“ae6df74457a7cbf62caf”

事务
=包含唯一事务中所有值的
事务
对象

mihpayid
=唯一事务中的mihpayid,即“403993715518647003”

输出:

快速变化的ID:ae6df74457a7cbf62caf
{
“mihpayid”:“403993715518647003”,
“请求id”:“,
“银行参考号”:“201833147408756”,
“金额”:“88.00”,
“交易金额”:“88.00”,
“txnid”:“ae6df74457a7cbf62caf”,
“附加费用”:“0.00”,
“结算时间”:“0000-00-00:00:00”

}

您的问题不清楚,请按提问方式提问。我有字符串格式的回答,我将其转换为JObject。这是一个完整的人你想要什么请告诉我…嗨,伙计,非常感谢我得到了事务详细信息中每个键的值。但是,你能帮我得到事务详细信息中的(“ae6df74457a7cbf62caf”)吗;如果(myData.transaction_details.Count>0){string TDval=myData.transaction_details.Values.ToString()},我已经更新了答案,包括如何从反序列化的JSON读取值。我希望这能让你更清楚:——)是的,伙计,非常感谢你的帮助,你的解决方案真的很棒。但是,在你的答案下面有一点长——Praneet Nadkar提供的答案太小了,而且还有效。但真的非常感谢我在代码中使用了您的解决方案。很高兴为您提供帮助!:)谢谢,伙计,这太简单了,非常感谢……真的,你的解决方案非常小,而且可以理解,可以实现。真的非常感谢我内心深处的感谢。
foreach(var item in myData.transaction_details)
{
    var id = item.Key;

    var transaction = item.Value;
    var mihpayid = transaction.mihpayid;
}
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]);
        }