Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将数据从C传递到Json#_C#_Json - Fatal编程技术网

C# 将数据从C传递到Json#

C# 将数据从C传递到Json#,c#,json,C#,Json,对JSON和webapi来说真的很陌生。我想将一些数据传递到JSON URL,并将数据作为c#对象返回。到目前为止,我能在网上找到的信息还不多,也没有找到我。我不知道如何传递值。 “URL/importSet”这里的importSet是什么意思 HttpWebRequest request = (HttpWebRequest)WebRequest.Create("URL/importSet"); IWebProxy theProxy = request.Proxy; if (theProxy

对JSON和webapi来说真的很陌生。我想将一些数据传递到JSON URL,并将数据作为c#对象返回。到目前为止,我能在网上找到的信息还不多,也没有找到我。我不知道如何传递值。 “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"
    }
}

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

为了将对象作为json传递,可以使用NuGet软件包管理器中提供的软件包
Newtonsoft

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);

现在,当您收到结果时,只需在创建一个表示所接收内容的类之后使用
反序列化

很简单,您可以使用
Newtonsoft
library进行序列化和反序列化 用法:使用Newtonsoft.Json

比如:


谢谢大家对我的支持。下面是我的代码工作,现在我可以得到回应

试试看
{
字符串webAddr=“URL/ImportSet”;
var httpWebRequest=(httpWebRequest)WebRequest.Create(webAddr);
httpWebRequest.Headers.Add(“授权”、“承载人”+“令牌号”);
httpWebRequest.ContentType=“application/json;charset=utf-8”;
httpWebRequest.Method=“POST”;
使用(var streamWriter=newstreamwriter(httpWebRequest.GetRequestStream()))
{
字符串json=“{\'BasicInformation\”:{\'BranchName\”:\“Abc\”,“DateFrom\”:“20180905\”,“DateTo\”:“20180905\”,“Details\”:“\”,“Header\”:{\'Company\:“C001\”,“BranchCode\”:“ABC123\”};
streamWriter.Write(json);
streamWriter.Flush();
}
var httpResponse=(HttpWebResponse)httpWebRequest.GetResponse();
使用(var streamReader=newstreamreader(httpResponse.GetResponseStream())
{
var responseText=streamReader.ReadToEnd();
textBox1.Text=responseText.ToString();
}
}
捕获(WebException ex)
{
控制台写入线(例如消息);

}
要将
reader.ReadToEnd()
(您正在显示的JSON)的结果转换为c#对象吗?请查看MS Docs中的文章。它解释了如何使用
webrequest
,并回答了
importSet
的含义是什么(即,它是资源的URI)您想将C和C中的JSON格式数据转换为JSON吗?@Haytam我想将JSON数据传递到那个URL,那个URL要得到结果,但我必须传递我的详细信息。详细信息格式是json。@Amireza Farahlagha,是的,我想将数据传递给json并以c#的形式返回某个结果。我建议使用
UTF8
编码代替
ASCII
。大多数web请求都可以处理UTF8(并且您可以始终指定这是数据的格式)。这将允许传递带有非ascii字符的字符串。@Haytam:我应该为信息创建类吗?BranchName,datefrom和所有人?bcoz传递的数据仍然显示未引用的错误。您可以,尽管我发布的代码可以正常工作,如果您只想发送/序列化。如果我像您建议的那样传递值,我将收到400个错误请求错误。您需要在服务器端查找此错误:/这是我遇到的第一个问题:“var jsonData=”Your string JSON data“如何在这行中传递值。@NAJEEB注意,在web应用程序中,对于发送和接收的数据,您必须序列化和反序列化。假设你有一个学生对象,你想以HTTP的形式发送,你必须像我的例子一样序列化,你想发送的对象在哪里???@NAJEEB把你的硬代码改为:“新建{”我试着复制粘贴json数据,我在代码中提到“}”。@NAJEEB现在如果你复制了,你可以发送你的数据,并且得到了这样的结果。之后,您可以反序列化它们以供使用。@NAJEEB您复制了吗??
public T Deserialize()
    {
        var jsonData = "Your string JSON data";

        var objectJSON = JsonConvert.DeserializeObject<T>(jsonData);

        return objectJSON;
    }

    public T Serialize()
    {
        var objectData = new Student();

        var objectData = JsonConvert.SerializeObject(objectData);

        return objectData;
    }
if (!String.IsNullOrEmpty(Request.QueryString["pID"]))
{
   // Query string value is there so now use it
   int thePID = Convert.ToInt32(Request.QueryString["pID"]);
}