JSON 到字典 C# .Net 2.0 标准
JSON to Dictionary C# .Net 2.0 Standard
我正在下载以下格式的 JSON(我无法更改):
[
{"Id":183,"description":"blahblahblah"},
{"Id":184,"description":"blehblehbleh"},
{"Id":1000,"description":"and so on..."}
]
如何将其转换为 Dictionary<string, string>
,如下所示:
{
{"blahblahblah", "183"},
{"blehblehbleh", "184"},
{"and so on...", "1000"}
}
?
我正在使用 C# .Net Standard 2.0(也许我可以使用 .Net 4.x)
您可以使用 Newtonsoft.Json
将您的 JSON 反序列化到字典中。
首先,制作一个 Item
class(或您选择的 class 的任何其他名称)。
public class Item
{
[JsonProperty("Id")]
public int Id { get; set; }
[JsonProperty("description")]
public string Description { get; set; }
}
其次,使用 JsonConvert.DeserializeObject()
and assign the key as Description
and the value as Id
using Enumerable.ToDictionary()
反序列化您的 json。此外,由于您的数据是 JSON 数组,您应该反序列化为 IEnumerable<Item>
以获得正确的结果。
var json = "[{ \"Id\":183,\"description\":\"blahblahblah\"},{ \"Id\":184,\"description\":\"blehblehbleh\"},{ \"Id\":1000,\"description\":\"and so on...\"}]";
var deserializedJsonDict = JsonConvert
.DeserializeObject<IEnumerable<Item>>(json)
.ToDictionary(entry => entry.Description, entry => entry.Id);
foreach (var entry in deserializedJsonDict)
{
Console.WriteLine($"Key={entry.Key}, Value={entry.Value}");
}
字典的输出键和值:
Key=blahblahblah, Value=183
Key=blehblehbleh, Value=184
Key=and so on..., Value=1000
我建议,首先使用 json2csharp
将您的 json 转换为 c# 模型
你的 json 模型看起来像
public class KeyValue
{
public int Id { get; set; }
public string description { get; set; }
}
然后使用Newtonsoft.Json.JsonConvert.DeserializeObject
将json转换为对象
var results = Newtonsoft.Json.JsonConvert.DeserializeObject<List<KeyValue>>(jsonString);
终于用foreach
移动到字典
Dictionary<int, string> keyValuePairs = new Dictionary<int, string>();
foreach (var keyvalue in results)
{
keyValuePairs.Add(keyvalue.description, keyvalue.Id);
}
我正在下载以下格式的 JSON(我无法更改):
[
{"Id":183,"description":"blahblahblah"},
{"Id":184,"description":"blehblehbleh"},
{"Id":1000,"description":"and so on..."}
]
如何将其转换为 Dictionary<string, string>
,如下所示:
{
{"blahblahblah", "183"},
{"blehblehbleh", "184"},
{"and so on...", "1000"}
}
?
我正在使用 C# .Net Standard 2.0(也许我可以使用 .Net 4.x)
您可以使用 Newtonsoft.Json
将您的 JSON 反序列化到字典中。
首先,制作一个 Item
class(或您选择的 class 的任何其他名称)。
public class Item
{
[JsonProperty("Id")]
public int Id { get; set; }
[JsonProperty("description")]
public string Description { get; set; }
}
其次,使用 JsonConvert.DeserializeObject()
and assign the key as Description
and the value as Id
using Enumerable.ToDictionary()
反序列化您的 json。此外,由于您的数据是 JSON 数组,您应该反序列化为 IEnumerable<Item>
以获得正确的结果。
var json = "[{ \"Id\":183,\"description\":\"blahblahblah\"},{ \"Id\":184,\"description\":\"blehblehbleh\"},{ \"Id\":1000,\"description\":\"and so on...\"}]";
var deserializedJsonDict = JsonConvert
.DeserializeObject<IEnumerable<Item>>(json)
.ToDictionary(entry => entry.Description, entry => entry.Id);
foreach (var entry in deserializedJsonDict)
{
Console.WriteLine($"Key={entry.Key}, Value={entry.Value}");
}
字典的输出键和值:
Key=blahblahblah, Value=183
Key=blehblehbleh, Value=184
Key=and so on..., Value=1000
我建议,首先使用 json2csharp
将您的 json 转换为 c# 模型你的 json 模型看起来像
public class KeyValue
{
public int Id { get; set; }
public string description { get; set; }
}
然后使用Newtonsoft.Json.JsonConvert.DeserializeObject
将json转换为对象
var results = Newtonsoft.Json.JsonConvert.DeserializeObject<List<KeyValue>>(jsonString);
终于用foreach
移动到字典
Dictionary<int, string> keyValuePairs = new Dictionary<int, string>();
foreach (var keyvalue in results)
{
keyValuePairs.Add(keyvalue.description, keyvalue.Id);
}