AtulSharma609 Ответов: 2

Я хочу сделать такую строку json и опубликовать ее в ASP.NET с#


Я хочу сделать такую строку json и опубликовать ее в asp.net с#
{
  "data": {
"amount":100,"currencyType":"MYR","expiry":{"type":"PERMANENT"},"isPreFillAmount":true,"method":null,"order":{"detail":"detail","title":"title"},"redirectUrl":"https://google.com","storeId":"1234","type":"DYNAMIC"
  },
  "method": "post",
  "nonceStr": "MNhrdDgIDlTKdlYXzfhEvqHpGjRhvrPe",
  "privateKey": "123456",
  "requestUrl": "https://sb-open.revenuemonster.my/v3/payment/transaction/qrcode",
  "signType": "sha256",
  "timestamp": "1532069238"
}



.. Прежде чем я использовал like ниже, это работало, но теперь проблема заключается в том, как сделать строку json, где данные имеют как массив внутри, имеют срок действия, а заказы имеют данные в скобках





Ценю любую помощь

Что я уже пробовал:

StreamWriter(httpWebRequest.GetRequestStream()))
{
    string jsonsign1 = new JavaScriptSerializer().Serialize(new
    {


        data = "{" + "amount" + ":" + "100" + "," + "currencyType" + ":" + "MYR" + "}",
        method = "post",
        nonceStr = nonce,
        privateKey = "123",
        requestUrl = "https://sb-open.revenuemonster.my/v3/payment/transaction/qrcode",
        signType = "sha256",
        timestamp = timestampStr

    });

    streamWriter.Write(jsonsign1);
}

2 Ответов

Рейтинг:
7

Vincent Maverick Durano

Я бы посоветовал вам создать бетон class для каждого object что вы хотите вернуть в качестве вывода вместо того, чтобы полагаться на анонимные типы. Таким образом, вы можете легко изменить объект, который хотите добавить/удалить, и легко поддерживать его. Например, вы можете создать следующий класс:

public class Response{
    public Data Data { get; set; }
    public string Method { get; set; }
    public string NonceStr { get; set; }
    public string PrivateKey { get; set; }
    public string RequestUrl { get; set; }
    public string SignType { get; set; }
    public DateTime TimeStamp { get; set; }
}

public class Data{
    public decimal Amount { get; set; }
    public string CurrencyType { get; set; }
    public Expiry Expiry { get; set; }
    public bool IsPreFillAmount { get; set;}
    public Order Order { get; set;}
    public string RedirectUrl { get; set;}
    public string StoreId { get; set;}
    public string Type { get; set;}
}

public class Order{
    public string Detail { get; set;}
    public string Title { get; set;}
}

public class Expiry{
    public string Type { get; set;}
}



Затем вы используете Newtonsoft.В JSON чтобы сериализовать объект как JSON вот такая струна:

 Response data = new Response(){
				Data = new Data(){
					Amount = 100,
        			CurrencyType = "MYR",
        			Expiry = new Expiry() { Type = "PERMANENT" },
        			IsPreFillAmount = true,
        			Order = new Order() 
        			{ 
            			Detail = "detail",
            			Title = "title"
        			},
        			RedirectUrl = "https://google.com",
        			StoreId = "1234",
        			Type = "DYNAMIC"
				},
				Method = "Post",
				NonceStr = "nonce",
    			PrivateKey = "123",
    			RequestUrl = "https://sb-open.revenuemonster.my/v3/payment/transaction/qrcode",
    			SignType = "sha256",
    			TimeStamp = DateTime.Now
};
			
string jsonResponse = JsonConvert.SerializeObject(data);



Переменная jsonResponse должен вернуть что-то вроде этого:
{
  "Data": {
    "Amount": 100,
    "CurrencyType": "MYR",
    "Expiry": {
      "Type": "PERMANENT"
    },
    "IsPreFillAmount": true,
    "Order": {
      "Detail": "detail",
      "Title": "title"
    },
    "RedirectUrl": "https://google.com",
    "StoreId": "1234",
    "Type": "DYNAMIC"
  },
  "Method": "Post",
  "NonceStr": "nonce",
  "PrivateKey": "123",
  "RequestUrl": "https://sb-open.revenuemonster.my/v3/payment/transaction/qrcode",
  "SignType": "sha256",
  "TimeStamp": "2018-12-21T02:37:17.5973561+00:00"
}


AtulSharma609

Спасибо

Рейтинг:
18

Richard Deeming

string jsonsign1 = new JavaScriptSerializer().Serialize(new
{
    data = new
    {
        amount = 100,
        currencyType = "MYR",
        expiry = new { type = "PERMANENT" },
        isPreFillAmount = true,
        order = new 
        { 
            detail = "detail",
            title = "title"
        },
        redirectUrl = "https://google.com",
        storeId = "1234",
        type = "DYNAMIC"
    },
    method = "post",
    nonceStr = nonce,
    privateKey = "123",
    requestUrl = "https://sb-open.revenuemonster.my/v3/payment/transaction/qrcode",
    signType = "sha256",
    timestamp = timestampStr
});


AtulSharma609

Большое вам спасибо, сэр, это действительно работает