从字典中正确地将字符串转换为 Json
Posted
技术标签:
【中文标题】从字典中正确地将字符串转换为 Json【英文标题】:Converting String to Json Properly from the Dictionary 【发布时间】:2021-05-11 13:14:11 【问题描述】:我想向烧瓶服务器发送一个 json 请求。我使用UnityWebRequest
这样做如下,
IEnumerator Post(string url, string bodyJsonString)
var request = new UnityWebRequest(url, "POST");
byte[] bodyRaw = Encoding.UTF8.GetBytes(bodyJsonString);
request.uploadHandler = (UploadHandler) new UploadHandlerRaw(bodyRaw);
request.downloadHandler = (DownloadHandler) new DownloadHandlerBuffer();
request.SetRequestHeader("Content-Type", "application/json");
yield return request.SendWebRequest();
我使用下面的代码来创建json,
Dictionary<string, string> RootJson = new Dictionary<string, string>();
Dictionary<string, float> id_val = new Dictionary<string, float>();
Dictionary<string,byte[]> employeeData = new Dictionary<string, byte[]>();
CalibrationJson.Add("id",1);
imagesJson.Add("employeeData",encodedByte);
RootJson.Add("id", JsonConvert.SerializeObject(id_val.ToString()));
RootJson.Add("data", JsonConvert.SerializeObject(employeeData.ToString()));
StartCoroutine(Post("http://127.0.0.1:5000/emp_detail", JsonConvert.SerializeObject(RootJson.ToString())));
尽管我每次都对字典进行序列化,但它并没有创建正确的 json。它在服务器中引发以下错误,
System.Collections.Generic.Dictionary`2[System.String,System.String]
我错过了什么?
【问题讨论】:
【参考方案1】:从您的序列化代码中删除ToString
:
RootJson.Add("id", JsonConvert.SerializeObject(id_val));
RootJson.Add("data", JsonConvert.SerializeObject(employeeData));
StartCoroutine(Post("http://127.0.0.1:5000/emp_detail", JsonConvert.SerializeObject(RootJson)));
对于不覆盖 ToString
的类型,它将返回类型名称,因此对于 Dictionary<string, string>()
,您将获得 "System.Collections.Generic.Dictionary`2[System.String,System.String]" :
Console.WriteLine(new Dictionary<string, string>().ToString()); // prints System.Collections.Generic.Dictionary`2[System.String,System.String]
【讨论】:
以上是关于从字典中正确地将字符串转换为 Json的主要内容,如果未能解决你的问题,请参考以下文章
如何将afnetworking json字典转换为字符串,然后在IOS中将字符串转换为字典?