首页 > 解决方案 > 从 C# 将数据传递给 Json

问题描述

对 JSON 和 webapi 来说真的很新。我想将一些数据传递给 JSON URL 并将数据作为 ac# 对象取回。到目前为止,我可以在网上找到的信息不多,或者我没有找到。我不知道如何传递价值。"URL/importSet" 这里的 importset 是什么意思。

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("URL/importSet");

IWebProxy theProxy = request.Proxy;

if (theProxy != null)
{
    theProxy.Credentials = CredentialCache.DefaultCredentials;
}

CookieContainer cookies = new CookieContainer();
request.UseDefaultCredentials = true;
request.CookieContainer = cookies;
request.ContentType = "application/json";
request.CookieContainer = cookies;

// write the "Authorization" header
request.Headers.Add("Authorization", "Bearer " + "token-key001");
request.Method = "POST";
var data = new {"I try to copy paste the json data here what i mention down"}
byte[] postBytes = Encoding.ASCII.GetBytes(data);
request.ContentLength = postBytes.Length;

using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
    StreamReader reader = new StreamReader(response.GetResponseStream());
    Console.Write(reader.ReadToEnd());
}

我的 json 数据格式是:

 {
    "BasicInformation": {
        "BranchName": "ABC",
        "DateFrom": "20180905",
        "DateTo": "20180905"
    },

    "Details": "",
    "Header": {
        "Company": "C001",
        "BranchCode": "ABC123"
    }
}

任何帮助将不胜感激。谢谢。

标签: c#json

解决方案


为了将对象作为 json 传递,您可以使用NewtonsoftNuGet 包管理器中提供的包。

using Newtonsoft.Json;

您将按如下方式使用它:

var data = new {
    BasicInformation = new {
        BranchName = "ABC",
        DateFrom = "20180905",
        DateTo = "20180905"
    },
    Details = "",
    Header = new {
        Company = "C001",
        BranchCode = "ABC123"
    }
};

var dataJson = JsonConvert.SerializeObject(data);

这给出了:

{"BasicInformation":{"BranchName":"ABC","DateFrom":"20180905","DateTo":"20180905"},"Details":"","Header":{"Company":"C001","BranchCode":"ABC123"}}

然后您可以在您的请求中使用它:

byte[] postBytes = Encoding.ASCII.GetBytes(dataJson);

现在,当您收到结果时,只需Deserialize在创建代表您收到的内容的类之后使用。


推荐阅读