[英]Converting string with list of Jarray Objects to JSONin C#
我有一個像這樣的 JSON 字符串
string str = [{"a":"b"},{"c":"d"}],
我使用以下代碼將其轉換為 Jarray,
JArray obj=JArray.Parse(str);
它工作正常,但我的輸入字符串已更改為
str=[{"a":"b"},{"c":"d"}],[{"e":"f"},{"g":"h"}]
現在 JArray 解析將錯誤作為 JArray 列表拋出,我如何在 C# 中解析上述字符串?
我能夠找到一種使用JsonReader.SupportMultipleContent解析以下字符串的方法:
[{"a":"b"},{"c":"d"}],[{"e":"f"},{"g":"h"}]
感謝 @dbc 為我指出正確的方向(請參閱閱讀完 JSON 內容后遇到的其他文本)。 請注意,此功能僅在 Json.NET 的 11.0.1 版中可用。
以下方法使用JsonTextReader
並返回IEnumerable<KeyValuePair<string, string>>
:
private static IEnumerable<KeyValuePair<string, string>> ParseKeyValuePairs(string json)
{
using (var reader = new StringReader(json))
using (var jsonReader = new JsonTextReader(reader) { SupportMultipleContent = true })
{
JsonSerializer serializer = JsonSerializer.CreateDefault();
while (jsonReader.Read())
{
if (jsonReader.TokenType == JsonToken.Comment)
{
continue;
}
var dictionaries = serializer.Deserialize<List<Dictionary<string, string>>>(jsonReader);
foreach (KeyValuePair<string, string> keyValue in dictionaries.SelectMany(x => x))
{
yield return keyValue;
}
}
}
}
使用代碼生成Dictionary<string, string>
:
string json = @"[{""a"":""b""},{""c"":""d""}],[{""e"":""f""},{""g"":""h""}]";
Dictionary<string, string> data = ParseKeyValuePairs(json).ToDictionary(x => x.Key, x => x.Value);
結果:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.