简体   繁体   English

使用 JObject 从嵌套的 Json 获取键的值

[英]get value of a key from nested Json using JObject

I am trying to get the values of the below JSON string:我正在尝试获取以下 JSON 字符串的值:

{
    "PaymentStatus": [
        {
            "MerchantTxnRefNo": "277753772122780",
            "PaymentId": "20239622798237",
            "ProcessDate": "9/16/2022 8:39:00 PM",
            "StatusDescription": "Transaction Success",
            "TrackId": "20239622798237",
            "BankRefNo": "20239622798237",
            "PaymentType": "CMA",
            "ErrorCode": "0",
            "ProductType": "DBO",
            "finalStatus": "success"
        }
    ]
}

I have used the below code to get it but did not work:我已经使用下面的代码来获取它但没有工作:

request.AddParameter("application/json", body, 
ParameterType.RequestBody);
IRestResponse response = client.Execute(request);

var obj = response.Content;
var TransactionObj = JObject.Parse(obj);

var jObject = Newtonsoft.Json.Linq.JObject.Parse(obj);
string StatusDescription = (string)jObject["PaymentStatus"]["StatusDescription"];

any suggestions?有什么建议么?

I wold try something like this我会尝试这样的

var paymentStatus = JObject.Parse(response.Content)["PaymentStatus"][0];

string statusDescription = paymentStatus["StatusDescription"].ToString();

string merchantTxnRefNo = paymentStatus["MerchantTxnRefNo"].ToString();

or maybe you need c# classes或者你可能需要 c# 类

List<PaymentStatus> paymentStatuses = JObject.Parse(json)["PaymentStatus"]
                                        .ToObject<List<PaymentStatus>>();

string statusDescription = paymentStatuses[0].StatusDescription;

long merchantTxnRefNo = paymentStatuses[0].MerchantTxnRefNo;

public class PaymentStatus
{
    public long MerchantTxnRefNo { get; set; }
    public long PaymentId { get; set; }
    public DateTime ProcessDate { get; set; }
    public string StatusDescription { get; set; }
    public long TrackId { get; set; }
    public long BankRefNo { get; set; }
    public string PaymentType { get; set; }
    public int ErrorCode { get; set; }
    public string ProductType { get; set; }
    public string finalStatus { get; set; }
}

Since PaymentStatus resolves to an array, use the indexer to get the object as below由于 PaymentStatus 解析为数组,因此使用索引器获取 object 如下

var StatusDescription = (string)jObject["PaymentStatus"] [0] ["MerchantTxnRefNo"]; var StatusDescription = (string)jObject["PaymentStatus"] [0] ["MerchantTxnRefNo"];

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

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