저는 C# 및 Linq에 익숙해지고 있으며 어떤 도움을 주셔서 감사합니다. 그것으로 일하는 사람은 쉽게해야합니다. 연락처 정보를 반환하는 Json 객체가 있습니다. 나는 또한 ID 목록을 가지고있다. 내가 JSON 객체와에 목록을 비교해야 목록의 값은 JSON 객체의 userclientcode
일치하는 곳마다, 나는 (단지 경기에 대한) 다음과 같은 정보를 추출해야합니다Linq 또는 C#을 사용하여 Json을 구문 분석하십시오.
clienttaxonomy (if not empty)
fullname (if not empty)
[0]contactdata (-> email if not null or empty)
[1]contactdata (-> address if not null or empty)
[2]contactdata (-> phone number if not null or empty)
첫 번째 목록
을var fileContactIds = new List<string> { "5678765", "2135123", "12341234", "341234123", "12341234123", "2341234123", "341234123", "123412341", "13342354",
"12342341", "123412322", "163341234", "2345234115", "8967896", "75626234 };
는
JSON 객체는 반환 :
return JsonConvert.DeserializeObject<RelatedContacts>(json)?.list;
이 인 JSON 오브젝트 : [! [JSON 오브젝트 [1] [1]
01,235,이있는 JSON 문자열 (이스케이프) :
{
"type": "com.kurtosys.api.userprofile.domain.RelatedContactList",
"list": [{
"objectlistid": 5678765,
"objectlisttypeid": 4567876,
"objectlistname": "ALL.National",
"clienttaxonomyid": 765677,
"clienttaxonomy": "National Wholesaler",
"order": 1,
"contacts": [{
"personid": 7654345678,
"fullname": "Person Jallo",
"userid": 876567,
"userclientcode": "341234123",
"contactdetails": [{
"contactid": 8765567,
"contacttypeid": 4565,
"contactdata": "[email protected]"
}, {
"contactid": 876545678,
"contacttypeid": 4565,
"contactdata": "Baltimore,MD,21209,United States"
}, {
"contactid": 87654567,
"contacttypeid": 4584,
"contactdata": "410-413-2640"
}]
}]
}, {
"objectlistid": 765678,
"objectlisttypeid": 40400461,
"objectlistname": "RM.Internal",
"clienttaxonomyid": 7567898,
"clienttaxonomy": "Internal Regional Wholesaler",
"order": 2,
"contacts": [{
"personid": 56789876,
"fullname": "Jackson Man",
"userid": 876567,
"userclientcode": "1012275",
"contactdetails": [{
"contactid": 309598309,
"contacttypeid": 76546,
"contactdata": "[email protected]@site.com.com"
}, {
"contactid": 876567,
"contacttypeid": 4581,
"contactdata": "Baltimore,MD,21209,United States"
}, {
"contactid": 876567,
"contacttypeid": 2342,
"contactdata": "123-413-2604"
}]
}]
}, {
"objectlistid": 309571364,
"objectlisttypeid": 40400461,
"objectlistname": "RM.External",
"clienttaxonomyid": 309580710,
"clienttaxonomy": "External Regional Wholesaler",
"order": 3,
"contacts": [{
"personid": 302736188,
"fullname": "Phal Sumi",
"userid": 303826019,
"userclientcode": "163341234",
"contactdetails": [{
"contactid": 309598253,
"contacttypeid": 2342,
"contactdata": "[email protected]"
}, {
"contactid": 309611930,
"contacttypeid": 2342,
"contactdata": "Baltimore,MD,21209,United States"
}, {
"contactid": 34234132,
"contacttypeid": 3422,
"contactdata": "342-803-1793"
}]
}]
}]
}
사용 방법 1] Linq에와 람다를 사용하여 선택하고 직렬화 된 객체에서 목록의 전체 이름, 이메일, 주소 등을 넣어? 2] 첫 번째 목록과 비교 만 userclientcode가 == 목록 A의 번호가
내가 시도 해당 항목 전송 :
var query5 = relatedContact.Where(s => s.objectlistid == Convert.ToInt64(contacts.Select(t => t.id)))
var selected = relatedContact.Where(p => p.contacts
.Any(a => fileContactIds.Contains(p.contacts))
.ToList();
var query2 = relatedContact.Where(s => s.objectlistid == Convert.ToInt64(contacts.Select(t => t.id)))
.Select(s => new
{
Description = s.clienttaxonomy,
Fullname = s.contacts[0].fullname,
Email = s.contacts[0].contactdetails[0].contactdata,
Address = s.contacts[0].contactdetails[1].contactdata,
PhoneNumber = s.contacts[0].contactdetails[2].contactdata
});
을하지만 실제로 내가 뭘하는지 모르겠어요 보인다. 필요한 섹션을 얻는 방법에 대한 제안 사항이 있으십니까? 이유 중 일부는 contactdata가 목록이라고 생각합니다. 감사합니다 그런 다음이
public class Rootobject
{
public string type { get; set; }
public List[] list { get; set; }
}
public class List
{
public int objectlistid { get; set; }
public int objectlisttypeid { get; set; }
public string objectlistname { get; set; }
public int clienttaxonomyid { get; set; }
public string clienttaxonomy { get; set; }
public int order { get; set; }
public Contact[] contacts { get; set; }
}
public class Contact
{
public long personid { get; set; }
public string fullname { get; set; }
public int userid { get; set; }
public string userclientcode { get; set; }
public Contactdetail[] contactdetails { get; set; }
}
public class Contactdetail
{
public int contactid { get; set; }
public int contacttypeid { get; set; }
public string contactdata { get; set; }
}
과 같은 JSON 개체의 desearlization에 대한 클래스를 생성 할 수 있습니다
Newtonsoft.Json 라이브러리는 객체에 json을 비 직렬화하는 데 도움이됩니다. NuGet에서로드 할 수 있습니다. – Fabio
[C#으로 JSON을 어떻게 파싱 할 수 있습니까?] (http://stackoverflow.com/questions/6620165/how- can-i-parse-json-with-c) – SeM
[문자열 및 기타 long 인 linq 및 lambda를 사용하여 두 목록 비교] (http://stackoverflow.com/questions/40400405/compare-two-lists) -with-linq-and-lambda-where-one-is-string-and-other-long) –