[英]C# - Trying to convert Dictionary to JSON
这是我的代码:
public class JsonData
{
public string header;
public Dictionary<string, string> data = new Dictionary<string, string>();
public int connectionId;
}
JsonData SendData = new JsonData();
SendData.header = "01";
SendData.data.Add("text", "What is Lorem Ipsum?Lorem ");
SendData.data.Add("accId", "123");
SendData.connectionId = 12;
string json = JsonUtility.ToJson(SendData);
一切都很好,但不知何故,转换后的JSON字符串中的关键data
根本不会出现。
string json
看起来像这样:
{"header":"01","connectionId":12}
代替:
{"header":"01","data":{"text":"What is Lorem Ipsum?Lorem ","accId":"123"},"connectionId":12}
我的错误在哪里? 为什么我不能收到这样的结果?
使用Newtonsoft.Json
获取正确的json。 鉴于您在项目中引用它,请使用命名空间:
using Newtonsoft.Json;
并使用JsonConvert.SerializeObject
静态方法:
string json = JsonConvert.SerializeObject(SendData);
来自https://docs.unity3d.com/ScriptReference/JsonUtility.ToJson.html 。
请注意,虽然可以将原始类型传递给此方法,但结果可能与您预期的不同; 该方法不是直接序列化它们,而是尝试序列化它们的公共实例字段,从而产生一个空对象。 类似地,将数组传递给此方法将不会生成包含每个元素的JSON数组,而是包含数组对象本身的公共字段的对象(其中没有)。 要序列化 数组或基元类型 的实际 内容,必须将其包装在 类或结构中 。
尝试在属性中公开数据的内容,如下所示。
public string dataOutput
{
get
{
return string.Join(",", data.Select(x => string.Format("\"{0}\":\"{1}\"", x.Key, x.Value)));
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.