안녕하세요!JSON을 TListBox로 파싱
저는 현재 데스크톱 용 CloudFlare
클라이언트를 구성하려고합니다. API에 연결하여 POST 요청 (결과는 TMemo
에 출력 됨)을 사용하여 JSON 결과를 성공적으로 검색했습니다. 이제이 결과를 TListBox
으로 구문 분석하려고합니다 (예 : 굵게 표시된 부분 참조). 프로젝트는 Firemonkey
으로 설계되었습니다.
다음은 몇 가지 예시 콘텐츠가 포함 된 형식화 된 응답 레이아웃입니다.
{
- response: {
|- ips: [
|- {
ip: "xxx.xxx.xxx.xxx",
classification: "threat",
hits: xx,
latitude: null,
longitude: null,
zone_name: "domain-example1"
},
- {
ip: "yyy.yyy.yyy.yyy",
classification: "robot",
hits: yy,
latitude: null,
longitude: null,
zone_name: "domain-example2"
}
]
}
result : "success",
msg: null
}
내가 해봤 여러 가지 구성 요소 - SuperObject, Paweł Głowacki's JSON Designtime Parser, Tiny-JSON, LKJSON과는 DBXJSON 내장되어 있습니다. 그러나 JSON에 대한 경험이 전혀 없기 때문에 내가 시작할 수있는 가장 기본적인 예제를 찾을 수없는 것 같습니다. 많은 사람들이 샘플 데이터를 보여 주지만, 내가 시도한 모든 것들은 예상대로 작동하지 않는 것 같습니다. 왜냐하면 내가 오해하고 있기 때문입니다. 구성 요소가 작동한다고 가정하므로 시작할 때 지침이 필요합니다.
ips
"배열"에는 수백 개, 종종 수천 개의 결과가 있습니다 (올바른 것이 아니라면 사과합니다. 배열로 알려져 있지만 다시 JSON을 처음 사용하는 경우).
내가 정말로 찾고있는 것은 내가 (구문 분석을 위해 사용하는 구성 요소와 함께) 빌드 할 수있는 매우 기본적인 샘플 코드 다. 내가 JSON 결과에서 모든 ip
을 잡아, 그리고 TListBox
(사용 TListBox.add
방법)에 별도의 항목으로 각 1 점을 추가하는 듯 싶었다 예를 들어
은, 내가 어떻게 이것을 달성 가겠어요? 난 ip
말할 때
, 난 값 (상기 레이아웃 포맷이이 xxx.xxx.xxx.xxx
또는 yyy.yyy.yyy.yyy
것)을 의미한다.
또한, 나는 "레코드"는 델파이 배열에 JSON 결과와 출력 데이터에서 IP있어 직접 확인하기를 원한다면 (?) - 예컨대을;
Result : Array of String = ['"xxx.xxx.xxx.xxx"','"threat"','xx','null','null','"domain-example1"'];
은 JSON에서 가능합니까? (이 질문이 별도의 질문으로 보이거나 너무 관련이없는 경우 질문 전체를 닫지 말고 편집하십시오.)
내가이에 도착 가장 가까운뿐만 아니라 IP의,하지만 별도의 TListItem
(즉 response
, ips
, ip
, classification
, xxx.xxx.xxx.xxx
데이터의 다른 모든 부분이 있고 다른 모든는 여러 빈 항목과 함께 자신의 항목입니다했다 비어 있지 않은 각 항목 사이에 있음).
나는 그것을 할 매우 간단 확신하지만 형식에 새로운 사람들을 위해 조금 압도 것을 JSON에 너무 많은 정보가있다.
최고 감사합니다, 스콧 프 리처드.
많은 감사 메이슨! 대답은 훌륭하고 개념을 이해합니다. 나는 약간 혼란 스럽다. 원래 질문에 대해 충분히 설명하지 않았지만 (나는 오프너에서 그렇게 말했지만 질문이 끝나면 잊어 버리기 쉽다). 나는 TMemo에서 평문 JSON (즉, API를 통해 검색된 파싱되지 않은 문자열)을 가져 왔으며이를 'lines.text'를 프로 시저가 요구하는'JSONObject' 응답. 또한,'ips : = pair.value as TJSONArray'는'E2015 - Operator not applicable'을 반환합니다. –
@scott :'TJSONObject.Parse'를보세요. 그리고 그 라인은'pair.JsonValue'를 대신 사용해야합니다. 내 잘못이야. –
미래의 참고 자료 (그리고 그것을 찾고있는 다른 누구나)를 위해 예제가 작동하기 위해서는 uses 절에'System.JSON' 유닛을 포함시켜야합니다 –