C# 将JSON数组反序列化为字符串数组

C# 将JSON数组反序列化为字符串数组,c#,.net,json,serialization,json.net,C#,.net,Json,Serialization,Json.net,假设我有一个字符串,表示JSON形式的对象数组: string s = "[{\"name\":\"Person1\"},{\"name\":\"Person2\"}]"; 我想要的是一个字符串数组,每个字符串都是JSON对象的字符串表示形式-而不是对象本身。它应该是这样的: string[] s = new string[] { "{\"name\":\"Person1\"}", "{\"name\":\"Person2\"}" }; 1) 几乎我尝试的每一次搜索都会得

假设我有一个
字符串
,表示JSON形式的对象数组:

string s = "[{\"name\":\"Person1\"},{\"name\":\"Person2\"}]";
我想要的是一个字符串数组,每个字符串都是JSON对象的字符串表示形式-而不是对象本身。它应该是这样的:

string[] s = new string[]
{
     "{\"name\":\"Person1\"}",
     "{\"name\":\"Person2\"}"
};
1) 几乎我尝试的每一次搜索都会得到数百万条关于如何使用(例如)JSON.NET简单地反序列化JSON字符串的结果。这不是我想做的

2) 我曾尝试构建一个表示对象的类,以通过反序列化/序列化映射将每个对象临时循环到数组中的字符串,但对象的模式是可变的(因此我只需要字符串表示)

3) 我尝试了一些正则表达式来尝试这样做,但是我的JSON字符串可以包含包含JSON字符串作为其值的字段(icky,但我无法控制),因此嵌套字符转义等在我决定在这里寻求帮助之前让我部分疯了


这应该很简单吗?有人有什么建议吗?

你为什么不用这个

string s = "[{\"name\":\"Person1\"},{\"name\":\"Person2\"}]";

string[] t = s.Split(',');

我试过了。它只提供您想要的字符串数组….

您需要对其进行反序列化,然后独立地序列化每个对象。 例如(使用
Newtonsoft.Json
):

如果您试图避免反序列化和序列化,您几乎肯定会遇到会破坏代码的边缘情况;
string s = "[{\"name\":\"Person1\"},{\"name\":\"Person2\"}]";
var Json = JsonConvert.DeserializeObject<List<object>>(s);
string[] Jsonn = Json.Select(x => x.ToString()).ToArray();
var Json=JsonConvert.DeserializeObject; 字符串[]Jsonn=Json.Select(x=>x.ToString()).ToArray();

[]Jsonn
返回字符串数组,而不是JObject格式的对象数组


希望这一条对您有所帮助。

但是我的JSON字符串可以包含包含JSON字符串作为其值的字段
-不会work@Rob看起来您没有看到字符串数组string[]s=新字符串[]{“{\”name\:\”Person1\“}”,“{\”name\“:\”Person2\“}”中所期望的内容;我确实看到了预期的结果。即使忽略他提到的逗号可能出现在json中的事实(因此不能简单地在
上拆分),您的代码仍然会返回
[{“name
,而不是
{“name
Person2}]
,而不是
Person2}
。。。猜测最初发布问题的人应该选择最好的一个…你不会通过逗号拆分来解析JSON。字段值可以包含逗号,第一个对象可以包含多个字段,也可以用逗号分隔。为什么不使用Json.NET?您可以反序列化到JSON数组,然后循环并将数组中的每个对象序列化为字符串,并将其放入列表或其他内容中。我认为反序列化到
对象(而不是定义所有预期字段的类),然后序列化会导致字段丢失。一开始我考虑了一会儿,然后立即驳回了这个想法,因为“显然行不通”。我想,反序列化到
对象
(而不是定义所有预期字段的类),然后序列化,会导致字段丢失。一开始我考虑了一会儿,然后立即驳回了这个想法,因为“显然行不通”。我猜鸡蛋在我脸上:)谢谢
{"name":"Person1"} 
{"name":"Person2"} 
string s = "[{\"name\":\"Person1\"},{\"name\":\"Person2\"}]";
var Json = JsonConvert.DeserializeObject<List<object>>(s);
string[] Jsonn = Json.Select(x => x.ToString()).ToArray();