在我的应用中,我以字符串格式获取了一些数据,我将其转换为json:
string stringValue = System.Text.Encoding.Default.GetString(message.Value);
var jsonValue = JsonConvert.DeserializeObject(stringValue);
生成的json字符串如下所示:
[
{
"LOCATION_ID": 2800,
"CITY": "Sao Paulo"
},
{
"LOCATION_ID": 1700,
"CITY": "Seattle"
},
{
"LOCATION_ID": 2300,
"CITY": "Singapore"
},
{
"LOCATION_ID": 1600,
"CITY": "South Brunswick"
},
{
"LOCATION_ID": 1500,
"CITY": "South San Francisco"
},
{
"LOCATION_ID": 1400,
"CITY": "Southlake"
},
{
"LOCATION_ID": 2600,
"CITY": "Stretford"
},
{
"LOCATION_ID": 2200,
"CITY": "Sydney"
}
]
我可以用什么语法迭代这个json数组,并一次打印出一个json对象?
答案 0 :(得分:5)
我可以使用什么语法迭代这个json数组并打印出来 一次一个json对象?
定义模型:
public class MyModel
{
public int LOCATION_ID { get; set; }
public string CITY { get; set; }
}
然后反序列化为此模型:
var models = JsonConvert.DeserializeObject<IList<MyModel>>(stringValue);
现在您可以自由地使用标准C#迭代构造进行迭代,例如foreach
关键字:
foreach (MyModel model in models)
{
Console.WriteLine(model.LOCATION_ID);
Console.WriteLine(model.CITY);
}
答案 1 :(得分:3)
最简单的方法是使用动力学如下。
请注意,此方法可减少代码占用空间,并且替代方法更具可读性:
var json = @"[
{
'LOCATION_ID': 2800,
'CITY': 'Sao Paulo'
},
{
'LOCATION_ID': 1700,
'CITY': 'Seattle'
}
]";
dynamic parsedArray = JsonConvert.DeserializeObject(json);
foreach (dynamic item in parsedArray)
Debug.WriteLine($"Location ID: {item.LOCATION_ID} City: {item.CITY}");
答案 2 :(得分:0)
Darin Dimitrov 现场回答。
另一种选择,如果你真的不想要强烈的模特,那就是使用词典及其特质。
var jsonObj = JsonConvert.DeserializeObject<Dictionary<string, string>[]>(stringValue);
foreach (var obj in jsonObj)
{
Console.WriteLine("{0}: {1}", obj["LOCATION_ID"], obj["CITY"]);
}