如何将Json字符串转换为c#中的键值对?

时间:2015-01-24 08:32:09

标签: c# .net regex json parsing

   {
      "transactionId" : XXXXX,
      "uri" : "https://XXX.XXXXXXXX.XXXX/XXX/XXX",
      "terminalId" : 1,
      "action" : "CHARGE",
      "amountBase" : "3.00",
      "amountTotal" : "3.00",
      "status" : "CAPTURE",
      "created" : "2015-01-24T07:24:10Z",
      "lastModified" : "2015-01-24T07:24:10Z",
      "response" : 
       {
           "approved" : true,
           "code" : "00",
           "message" : "Approved",
           "processor" : 
            {
               "authorized" : true,
               "approvalCode" : "XXXX",
               "avs" : 
                     {
                         "status" : "NOT_REQUESTED"
                     },
            }
  },
  "settlement" : 
   {
        "settled" : false
   },
  "vault" : 
   {
        "type" : "CARD",
        "accountType" : "VISA",
        "lastFour" : "1111"
  }

}

2 个答案:

答案 0 :(得分:1)

我看到这已经获得了很多票数,但没有人提供任何建议。上面的json不是自然适合字典,但应该反序列化为对象。

响应,结算和保险库都有自己的属性,因此应该是他们自己的对象。

查看Json.net,了解将json转换为c#对象的好方法。如果您不知道如何在C#中表示此对象,那么您需要阅读一本关于编程的好书,其中包括面向对象编程。

对于这些问题,堆栈是一个很好的资源,但是您需要先尝试表明您已经完成了自己的研究,否则其他人只会将您的问题标记下来。

答案 1 :(得分:1)

您是否收到包含JSON的POST?

您可以使用类似的东西,创建Request类的实例并将JSON obj分配给该实例。您应该能够通过请求实例访问参数。

基本结构看起来像这样:

public class Request
{
    public Int64 transactionId { get; set; }
    public string uri { get; set; }
    public int terminalId { get; set; }
    public string action { get; set; }
    public string amountBase { get; set; }
    public int amountTotal { get; set; }
    public string status { get; set; }
    public DateTime created { get; set; }
    public DateTime lastModified { get; set; }
    public Response response { get; set; }
    public Settlement settlement { get; set; }
    public Vault vault { get; set; }
}
public class Response
{
    public bool approved { get; set; }
    public int code { get; set; }
    public string message { get; set; }
    public Processor processor { get; set; }
}
public class Processor
{
    public bool authorized { get; set; }
    public string approvedCode { get; set; }
    public AVS avs { get; set; }
}
public class AVS
{
    public string status { get; set; }
}
public class Settlement
{
    public bool settled { get; set; }
}
public class Vault
{
    public string type { get; set; }
    public string accountType { get; set; }
    public string lastFour { get; set; }
}

希望这会有所帮助!!