[英]c# json parsing format
在c#中,我試圖解析以下格式的JSON。 我只能使用下面的示例代碼來接近,但是它非常不穩定。
(我也不確定如何用Javascript解析,這也是我需要做的。)
JSON示例:
{"72": { "Rejected": true }, "271": { "PreApproved": true}}
代碼示例:
List<SSKChanges> lstSSK = new List<SSKChanges>();
string sskSource = "";
string sskStatus = "";
bool sskStatusBool = false;
int i = 0;
int iList = 0;
JsonTextReader reader = new JsonTextReader(new StringReader(jsonExample));
while (reader.Read())
{
if (reader.Value != null)
{
if (i == 0)
{
int n;
bool isNumeric = int.TryParse(reader.Value.ToString(), out n);
if (isNumeric)
{
sskSource = reader.Value.ToString();
i = 1;
}
else
{
sskStatus = reader.Value.ToString();
i = 2;
}
}
else if (i == 1)
{
sskStatus = reader.Value.ToString();
i = 2;
}
else
{
sskStatusBool = (bool)reader.Value;
i = 0;
sskSource = "";
sskStatus = "";
sskStatusBool = false;
}
}
}
假設您已經在使用json.net (如使用JsonTextReader所建議的JsonTextReader
),則可以將JSON加載到JObject
然后使用LINQ to JSON 查詢生成的對象。
例如,給定類:
public class SSKChanges
{
public string SskSource { get; set; }
public string SskStatus { get; set; }
public bool? SskStatusBool { get; set; }
}
你可以做:
var obj = JObject.Parse(jsonExample);
var lstSSK = (from property in obj.Properties()
select new SSKChanges
{
SskSource = property.Name,
SskStatus = property.Value.Children<JProperty>().Select(p2 => p2.Name).FirstOrDefault(),
SskStatusBool = property.Value.Children<JProperty>().Select(p2 => (bool?)p2.Value).FirstOrDefault()
}).ToList();
至於您問題中的第二個問題, 我也不確定如何用javascript解析,我也需要這樣做 ,您應該問一個專門針對javascript專家的第二個問題。
由於您已經在使用Json.net,因此我可以這樣做:
string json = @"{""72"": { ""Rejected"": true }, ""271"": { ""PreApproved"": true}}";
var jobj = JObject.Parse(json);
foreach (var entry in jobj.Children().Cast<JProperty>())
{
var kv = entry.Value.First() as JProperty;
Console.WriteLine(entry.Name + "=>" + kv.Name + ":" + kv.Value);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.