无法解析中间有数组的键/值混合对。我要么只能获取键/值,要么只能获取数组,但不能两者都获取。
我尝试遵循https://www.newtonsoft.com/json/help/html/SerializingJSON.htm上的文档,但没有找到符合我需要的示例。
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
namespace ParsingJSON
{
class Program
{
static void Main(string[] args)
{
// code to deserialize from JSON string to a typed object
string json = @"{
'TransferResult': 'SUCCESS',
'City': 'California',
'State': 'CA',
'Applications': [
{'AppSerial' : 'APX3531'},
{'AppSerial' : 'APX3263'},
{'AppSerial' : 'APX3251','OfficialResult' : 'PENDING'},
{'AppSerial' : 'APX3228'},
{'AppSerial' : 'APX9521'},
{'AppSerial' : 'APX3251','OfficialResult' : 'APPROVED'},
]}";
Application app = JsonConvert.DeserializeObject<Application>(json);
if(app.TransferResult == "SUCCESS")
{
// if TransferResult == SUCCESS
// grab the City, State, AppSerial, and OfficialResult if any
Console.WriteLine(app.City);
Console.WriteLine(app.State);
Console.WriteLine(app.AppSerial); // make key value pairs of AppSerial and values and OfficialResults and results
Console.WriteLine(app.OfficialResult); // if any
Console.ReadLine();
}
} // Main
public class Application
{
public string TransferResult { get; set; } //SUCCESS or FAIL
public string City { get; set; } // California.
public string State { get; set; } // CA
public string AppSerial { get; set; } // APX12345
public string OfficialResult { get; set; } // APPROVED, PENDING, ADOPTED
} //Application
} // Program
} //namespace
我想获取JSON City,州和该城市的AppSerials以及OfficialResult(如果有)。现在我只得到城市,州名,而AppSerials却一无所获。
答案 0 :(得分:1)
您需要参加实际的课程
public class Rootobject
{
public string TransferResult { get; set; }
public string City { get; set; }
public string State { get; set; }
public Application[] Applications { get; set; }
}
public class Application
{
public string AppSerial { get; set; }
public string OfficialResult { get; set; }
}
,您需要以这种方式反序列化
Rootobject app = JsonConvert.DeserializeObject<Rootobject>(json);
答案 1 :(得分:0)
尝试以下操作:
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
namespace ParsingJSON
{
class Program
{
static void Main(string[] args)
{
// code to deserialize from JSON string to a typed object
string json = @"{
'TransferResult': 'SUCCESS',
'City': 'California',
'State': 'CA',
'Applications': [
{'AppSerial' : 'APX3531'},
{'AppSerial' : 'APX3263'},
{'AppSerial' : 'APX3251','OfficialResult' : 'PENDING'},
{'AppSerial' : 'APX3228'},
{'AppSerial' : 'APX9521'},
{'AppSerial' : 'APX3251','OfficialResult' : 'APPROVED'},
]}";
Application app = JsonConvert.DeserializeObject<Application>(json);
if(app.TransferResult == "SUCCESS")
{
// if TransferResult == SUCCESS
// grab the City, State, AppSerial, and OfficialResult if any
Console.WriteLine(app.City);
Console.WriteLine(app.State);
Console.WriteLine(app.AppSerial); // make key value pairs of AppSerial and values and OfficialResults and results
Console.WriteLine(app.OfficialResult); // if any
Console.ReadLine();
}
} // Main
public class Application
{
public string TransferResult { get; set; } //SUCCESS or FAIL
public string City { get; set; } // California.
public string State { get; set; } // CA
public List<ApplicationDetail> Applications { get; set; }
} //Application
public class ApplicationDetail
{
public string AppSerial { get; set; }
public string OfficialResult { get; set; }
} // ApplicationDetail
} // Program
} //namespace