Ale*_*lan 6 .net c# serialization json json.net
假设我有一个stringJSON 形式的对象数组:
string s = "[{\"name\":\"Person1\"},{\"name\":\"Person2\"}]";
Run Code Online (Sandbox Code Playgroud)
我想要的是一个字符串数组,每个字符串都是JSON 对象的字符串表示- 而不是对象本身。它应该是这样的:
string[] s = new string[]
{
"{\"name\":\"Person1\"}",
"{\"name\":\"Person2\"}"
};
Run Code Online (Sandbox Code Playgroud)
1) 我尝试的几乎每一次搜索都会获得数百万个关于如何使用(例如)Json.NET 简单反序列化 JSON 字符串的结果。这不是我想做的。
2)我尝试构建一个表示对象的类,以临时循环反序列化/序列化映射到数组中的每个字符串,但对象的模式是可变的(因此我只需要一个字符串表示)。
3)我尝试了一些正则表达式来尝试执行此操作,但是我的 JSON 字符串可以包含包含 JSON 字符串作为其值的字段(令人讨厌,但不受我控制),因此嵌套字符转义等在我决定之前让我部分发疯在这里求救。
这当然应该很简单?有人有任何指示吗?
您需要反序列化它,然后独立序列化每个对象。例如(使用Newtonsoft.Json):
string json = "[{\"name\":\"Person1\"},{\"name\":\"Person2\"}]";
var objects = JsonConvert.DeserializeObject<List<object>>(json);
var result = objects.Select(obj => JsonConvert.SerializeObject(obj)).ToArray();
Run Code Online (Sandbox Code Playgroud)
产量(作为string[]):
{"name":"Person1"}
{"name":"Person2"}
Run Code Online (Sandbox Code Playgroud)
如果您尝试避免反序列化和序列化,则几乎肯定会遇到会破坏代码的边缘情况。