我有以下类来表示MSSQL数据库中的表:
public string firstname { get; set; }
public string lastname { get; set; }
public string events { get; set; }
&#39>事件' property实际上是在存储到表中之前序列化的JSON对象数组。示例行:
FirstName: Test
LastName: User
Events: [{"eventname":"event1","eventtype":"1"},{"eventname":"event2","eventtype":"2"}]
我需要从JSON格式的Web API调用返回此表的内容,使其类似于:
[{
"firstname":"Test",
"lastname":"User",
"Events":[{"eventname":"event1","eventtype":"1"},{"eventname":"event2","eventtype":"2"}]
},
{...}]
问题是当我这样做时,事件JSON属性被转义并以单字符串形式出现:
[{
"firstname":"Test",
"lastname":"User",
"Events":"[{\"eventname\":\"event1\",\"eventtype\":\"1\"},{\"eventname\":\"event2\",\"eventtype\":\"2\"}]
},
{...}]"
显然它是因为events属性的类是一个字符串变量,但不知道我能做些什么而不必遍历每一行来重新格式化?
答案 0 :(得分:-1)
在C#中处理对象时,我建议创建一个Event类来创建一个Event对象列表:
public class Event
{
public string EventName { get; set; }
public string EventType { get; set; }
}
public class YourClass
{
public string firstname { get; set; }
public string lastname { get; set; }
public List<Event> events { get; set; }
}
如果您需要将该对象存储为MSSQL数据库中的JSON对象,则可以在将其保存到数据库时对其进行转换:
List<Event> yourEvents = new List<Event>();
Newtonsoft.Json.JsonConvert.SerializeObject(yourEvents).ToString();
从MSSQL数据库中检索时,您可以使用Serialize
函数的反转来创建C#List:
Newtonsoft.Json.JsonConvert.DeserializeObject(yourRetrievedEvents);
要Deserialize
所有检索到的数据,您可以使用Linq:
public class RetrievedClass
{
public string firstname { get; set; }
public string lastname { get; set; }
public string events { get; set; }
}
List<RetrievedClass> dbData = mssql()
List<YourClass> result = dbData.Select(x => new YourClass
{
firstname = x.firstname,
lastname = x.lastname,
events = Newtonsoft.Json.JsonConvert.DeserializeObject(x.events)
});
不幸的是,我没有看到没有使用Linq或循环的方法。