HttpClient에서 JSON 문자열을 해석하려면 어떻게 해야 하나요?
외부 API를 호출하여 JSON 결과를 얻고 있습니다.
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(url);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = client.GetAsync(url).Result;
if (response.IsSuccessStatusCode)
{
var result = response.Content.ReadAsStringAsync().Result;
var s = Newtonsoft.Json.JsonConvert.DeserializeObject(result);
return "Success";
}
else
{
return "Fail";
}
결과는 일치합니다.var s = Newtonsoft.Json.JsonConvert.DeserializeObject(result);
나는 다음과 같이 되고 있다.
{{
"query": "1",
"topScoringIntent": {
"intent": "1",
"score": 0.9978111,
"actions": [
{
"triggered": false,
"name": "1",
"parameters": []
}
]
},
"entities": [],
"dialog": {
"prompt": "1",
"parameterName": "1",
"parameterType": "1::1",
"contextId": "11",
"status": "1"
}
}}
사용하고 있다HttpClient
접속에 어려움을 겪고 있다.prompt
키밸류갖고싶다prompt
부터dialog
어떻게 구할 수 있죠?
떠오르는 세 가지 방법이 있습니다.
json이 일관성이 있고 응답 구조가 자주 바뀌지 않는다고 가정하면, 저는 json2csharp 또는 jsonutils와 같은 도구를 사용하여 c# 클래스를 만듭니다.
그 후, 전화:
{GeneratedClass} obj = JsonConvert.DeserializeObject<{GeneratedClass}>(result);
이렇게 하면 강력한 유형의 개체를 사용할 수 있습니다.
클래스 생성을 건너뛰고 동적 개체를 사용할 수 있습니다.
dynamic obj = JsonConvert.DeserializeObject<dynamic>(result)
및 다음과 같은 속성에 액세스합니다.
obj.dialog.prompt;
JObject를 사용하여 문자열을 사용하여 속성에 액세스할 수 있습니다.
JObject obj = JsonConvert.DeserializeObject(result); obj["dialog"]["prompt"]
편집:
뉴턴소프트를 수입하다.제이슨
JObject s = JObject.Parse(result);
string yourPrompt = (string)s["dialog"]["prompt"];
여기를 참조해 주세요.http://www.newtonsoft.com/json/help/html/deserializeobject.htm
XML과 동일한 구조로 클래스를 만듭니다. 그러면 변수가s
는 이 클래스의 인스턴스로 json을 클래스 구조로 역직렬화할 수 있습니다.
당신의 경우, 당신의 재산은s.dialog.prompt
.
NuGet 패키지 Microsoft 를 인스톨 합니다.AspNet.WebApi.클라이언트:
PM> Install-Package Microsoft.AspNet.WebApi.Client
포함:
using Newtonsoft.Json;
내용을 JObject로 직접 읽으면 한 단계를 절약할 수 있습니다.
dynamic response = await response.Content.ReadAsAsync<JObject>();
string prompt = response.dialog.prompt.ToString();
주의: 응답 내용은 Content-Type "application/json"이어야 합니다.
언급URL : https://stackoverflow.com/questions/39468096/how-can-i-parse-json-string-from-httpclient
'programing' 카테고리의 다른 글
WordPress: enqueue를 사용하여 여러 스크립트 로드 (0) | 2023.03.20 |
---|---|
리액트 리플릿 맵이 올바르게 표시되지 않음 (0) | 2023.03.20 |
Angularjs: ng-options 그룹화 기준 (0) | 2023.03.15 |
AngularJS에서 객체 데이터 소스를 ng-repeat으로 정렬하려면 어떻게 해야 합니까? (0) | 2023.03.15 |
Mongodb에서의 문서 갱신 및 반환 (0) | 2023.03.15 |