在下面的JSON数据中是服务对象,其中包含多组对象。每个对象都包含itemCode对象和bCode值。我需要从每个itemCode对象中查找每个bCode,并在bcode值与任何列表项打印说明匹配时与列表进行比较。 我无法为每个bcode创建路径。
{
"getResponse": {
"dID": "B03",
"aNumber": "45901",
"services": [
{
"sIdentifier": "1",
"itemCode": {
"bCode": "LAX005",
"eCode": "BASICSPPA",
"description": "Residential 50 ",
"lDescription": "SPPA Basic 01"
},
},
{
"serviceIdentifier": "1",
"itemCode": {
"bcode": "LAY010",
"ecode": "EXPBASICSPPA",
"description": "100",
"lDescription": "Residential 100"
},
},
{
"serviceIdentifier": "1",
"itemCode": {
"bcode": "LAZ045",
"ecode": "FEEVBSURSP",
"description": " 200",
"lDescription": "Residential 200"
},
},
{
"serviceIdentifier": "1",
"itemCode": {
"bcode": "LABX700",
"ecode": "HSIBASESPPA",
"description": "300",
"lDescription": "Residential 300"
},
},
{
"serviceIdentifier": "1",
"itemCode": {
"bcode": "LABX905",
"ecode": "SPVTELLN00",
"description": "400",
"lDescription": "Residential 400"
},
},
],
"sourceSystem": "04:00"
}
}
我正在尝试类似的事情
public static void CreateObject()
{
List<string> bCode = new List<string>();
string[] codes = { "BA00010", "BA00012", "BA00050", "BA00020", "BA00022", "BA00025", "BA00030", "LAZ045", "BA00040", "BA00060", "LA700" };
billerCode.AddRange(codes);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);
request.Method = "POST";
request.ContentType = "application/json";
request.ContentLength = DATA.Length;
using (Stream webStream = request.GetRequestStream())
using (StreamWriter requestWriter = new StreamWriter(webStream, System.Text.Encoding.ASCII))
{
requestWriter.Write(DATA);
}
try
{
WebResponse webResponse = request.GetResponse();
using (Stream webStream = webResponse.GetResponseStream())
{
if (webStream != null)
{
using (StreamReader responseReader = new StreamReader(webStream))
{
var response = responseReader.ReadToEnd();
var json = JObject.Parse(response);
dynamic deSerData = JsonConvert.DeserializeObject<Dictionary<string, object>>(json.ToString());
Dictionary<string, object> qoset_object= deSerData["getResponse"].ToObject<Dictionary<string, object>>();
foreach (var item in qoset_object)
{
if (item.Key == "services")
{
List<string> ut = new List<string>();
// ut.Add(item.Value);
}
}
foreach (var item in bCode)
{
}
}
}
}
}
catch (Exception e)
{
Console.Out.WriteLine("-----------------");
Console.Out.WriteLine(e.Message);
}
}
}
请提出任何建议。
答案 0 :(得分:1)
由于您仅对某些属性感兴趣,因此可以将JObject与其一起使用,而不必将JSON反序列化为新类:
var obj = JObject.Parse(json);
var result = new List<string>();
var myBCodes = new List<string> {"LAX005"};
foreach (var jToken in obj["getResponse"]["services"].Select(s => s["itemCode"]))
{
if (myBCodes.Contains(jToken["bCode"].ToString()))
result.Add(jToken["description"].ToString());
}
答案 1 :(得分:0)
您必须创建这种模态
public class GetResponse
{
public strin dID{ get; set; }
public string aNumber{ get; set; }
public services services{ get; set; }
public string sourceSystem { get; set; }
}
public class services
{
public string sIdentifier{ get; set; }
public List<itemCode> itemCode{ get; set; }
}
public class itemCode
{
public string bcode{ get; set; }
public string ecode{ get; set; }
public string description{ get; set; }
public string lDescription{ get; set; }
}
GetResponse getResponse = JsonConvert.DeserializeObject<GetResponse>(json.ToString());
//After that you will use foreach loop and get value from modal