我将一些JSON数据作为一个字符串看起来像(从VS文本可视化工具中复制和粘贴):
{
"error":0,
"result":{
"name":"wjetestuser1",
"id":"0eu0_User_2_0b4cfb616e648d4792056c1a6e7d801e_null",
"status":"ACTIVE"
}
}
{
"match":[
[
"domain.id",
"=",
"2"
],
[
"loginName",
"=",
"wjetestuser1"
]
],
"return":[
"name",
"id",
"status"
]
}
我试图将此转换为"result":
之后和{"match":
之前的所有内容的列表,而不使用替换命令,因此我最终得到的列表看起来很像类似的东西:
Name, wjetestuser1 id, 0eu0_User_2_0b4cfb616e648d4792056c1a6e7d801e_null status, ACTIVE
如果我能够获得错误代码状态,那就是奖金,但实际上并不需要。
我希望有一个简单的(或几个衬垫)不会涉及使用替换正则表达式命令将字符串分开。
到目前为止,各种代码都尝试了,但如果我之前删除"result":
以及之后包括{"match":
是上面的输出作为单行
s = commonCode.ExeApiCall(url);
var DSData = new List<KeyValuePair<string, string>>();
var jsonData = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(s);
第3行错误,错误:
完成阅读JSON内容后遇到的其他文字:{。路径&#39;&#39;,第1行,第119位。
答案 0 :(得分:1)
正如Rufo先生在this comment指出的,如果你使用Newtownsoft图书馆,你可以Read Multiple Fragments With JsonReader。网站上的例子:
public class Role
{
public string Name { get; set; }
}
public class Main
{
string json = @"{ 'name': 'Admin' }{ 'name': 'Publisher' }";
IList<Role> roles = new List<Role>();
JsonTextReader reader = new JsonTextReader(new StringReader(json));
reader.SupportMultipleContent = true;
while (true)
{
if (!reader.Read())
break;
JsonSerializer serializer = new JsonSerializer();
Role role = serializer.Deserialize<Role>(reader);
roles.Add(role);
}
foreach (Role role in roles)
Console.WriteLine(role.Name);
}
我的原始答案是为这种特殊情况制作最小的JSON解析器。 See revision history for that