![](/img/trans.png)
[英]Issue In JSON Result when using JsonConvert.SerializeObject C#
[英]How to use a specific field as the name of a json object when using jsonconvert.serializeobject?
所以我当前来自serializeobject的输出是:
{
"ID": "dog-1",
"fed": [
"2016/05/19T01:00:00Z"
]
},
“ ID”是我要序列化的对象中的字符串,“ fed”是字符串列表。
我的问题是,我可以使用某种属性来代替它吗?
"dog-1" : {
"fed": [
"2016/05/19T01:00:00Z"
]
},
我正在使用newtonsoft JsonConvert.SerializeObject
简短的回答:不,你不能
您正在序列化一个对象,这是将其结构转换为描述其属性和值的字符串。
但是,您可以标识要序列化的结构,将对象从其原始结构迁移到所需的结构,然后序列化。
在您的示例中,您有一个看起来像这样的对象:
class yourObject {
public string ID;
public Date fed;
}
但是您想要序列化为更像字典的东西,该字典稳定了字符串和Date之间的直接关系。
也许您可以创建类似于以下内容的东西:
class yourOtherObject {
public Date fed;
}
并以如下方式加载原始对象:
yourObject originalData = new yourObject("dog-1", "2016/05/19T01:00:00Z");
yourOtherObject originalDataDate = new yourOtherObject();
originalDataDate.fed = originalData.fed;
KeyValuePair<string, yourOtherObject> serializableData = new KeyValuePair<string, yourOtherObject>(originalData.ID, originalDataDate);
现在,如果序列化serializableData ,则应获得所需的结果。 只需将想法封装到一个类中,创建临时的构造函数和方法,即可将数据从yourObject传输到此类,再从该类传输到yourObject,则可以获取翻译。
另一个选择是添加一个方法,使特定的序列化进入yourObject类,但是从长远来看,这往往会花费更多的工作。
找到了可用的解决方案。
var x = new List<MyClass>();
JsonConvert.SerializeObject(x.ToDictionary(x => x.ID));
这将创建一个Json列表,每个对象如下所示:
"dog" : {
"myList" : [
"mystring",
"mysecondstring"
]
}
带有如下所示的对象列表:
object.ID == "dog"
object.myList == ["mystring", "mysecondstring"] //is a List<string>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.