다음 코드를 사용하여 JSON을 구문 분석합니다. 나는 예외를 얻고있다.JSON 구문 분석 문제 C#
using System.Collections.Generic;
using Newtonsoft.Json;
using RestSharp;
using WebAutomation.BDD.Data;
namespace WebAutomation.Utils
{
public class RestApi
{
private static IRestResponse HttpGetResponse(string endPoint)
{
var client = new RestClient(endPoint);
var request = new RestRequest(Method.GET);
return client.Execute(request);
}
public static FeaturedMenuItems GetFeaturedMenuItems()
{
var a = HttpGetResponse("http://<DOMAIN>/api/web/menu/quick");
return JsonConvert.DeserializeObject<FeaturedMenuItems>(a.Content);
}
}
}
나는 다음과 같은 클래스를 사용하고하면 구문 분석 :
Newtonsoft : 예외 다음
[ { "Featured_Menu": [ { "MenuItemName": "Today's Racing", "MenuItemName-en": "Today's Racing", "MenuItemName-zh": "今日赛事", "url": "/racing-betting/today", "LastModifiedDate": "20170914111417" }, { "MenuItemName": "Tomorrow's Racing", "MenuItemName-en": "Tomorrow's Racing", "MenuItemName-zh": "明日赛事", "url": "/racing-betting/tomorrow", "LastModifiedDate": "20170914111417" }, { "MenuItemName": "Upcoming Sports", "MenuItemName-en": "Upcoming Sports", "MenuItemName-zh": "近期赛事", "url": "/sports-betting/next-up", "LastModifiedDate": "20170914111417" }, { "MenuItemName": "Live Centre", "MenuItemName-en": "Live Centre", "MenuItemName-zh": "即场投注", "url": "/live-in-play-betting", "LastModifiedDate": "20170914111417" }, { "MenuItemName": "Multi Express", "MenuItemName-en": "Multi Express", "MenuItemName-zh": "Multi Express", "url": "/multi-express", "LastModifiedDate": "20170914111417" }, { "MenuItemName": "AFL Finals", "MenuItemName-en": "AFL Finals", "MenuItemName-zh": "AFL Finals", "url": "/sports-betting/australian-rules/afl", "LastModifiedDate": "20170914111417" }, { "MenuItemName": "NRL Finals", "MenuItemName-en": "NRL Finals", "MenuItemName-zh": "NRL Finals", "url": "/sports-betting/rugby-league/nrl/nrl-matches", "LastModifiedDate": "20170914111417" }, { "MenuItemName": "MLB Matches", "MenuItemName-en": "MLB Matches", "MenuItemName-zh": "MLB Matches", "url": "/sports-betting/baseball/major-league-baseball/mlb-matches", "LastModifiedDate": "20170914111417" }, { "MenuItemName": "NFL Matches", "MenuItemName-en": "NFL Matches", "MenuItemName-zh": "NFL Matches", "url": "/sports-betting/american-football/nfl/nfl-matches/", "LastModifiedDate": "20170914111417" }, { "MenuItemName": "EPL Matches", "MenuItemName-en": "EPL Matches", "MenuItemName-zh": "EPL Matches", "url": "/sports-betting/soccer/united-kingdom/english-premier-league-matches", "LastModifiedDate": "20170914111417" }, { "MenuItemName": "UEFA Europa League", "MenuItemName-en": "UEFA Europa League", "MenuItemName-zh": "UEFA Europa League", "url": "/sports-betting/soccer/uefa-competitions/europa-league-matches/", "LastModifiedDate": "20170914111417" }, { "MenuItemName": "Golovkin v Alvarez", "MenuItemName-en": "Golovkin v Alvarez", "MenuItemName-zh": "Golovkin v Alvarez", "url": "/sports-betting/boxing/bouts/fights/gennady-golovkin-v-saul-alvarez-20170917-600896-21745986", "LastModifiedDate": "20170914111417" }, { "MenuItemName": "Makybe Diva Stakes", "MenuItemName-en": "Makybe Diva Stakes", "MenuItemName-zh": "Makybe Diva Stakes", "url": "/racing-betting/horse-racing/flemington/20170916/race-7-704632-23756853", "LastModifiedDate": "20170914111417" }, { "MenuItemName": "The Shorts", "MenuItemName-en": "The Shorts", "MenuItemName-zh": "The Shorts", "url": "/racing-betting/horse-racing/randwick/20170916/race-7-704601-23756572", "LastModifiedDate": "20170914111417" }, { "MenuItemName": "Lotto", "MenuItemName-en": "Lotto", "MenuItemName-zh": "Lotto", "url": "/http://crownlotto.com.au", "LastModifiedDate": "20170914111417" } ] } ]
나는 점점 오전 :
using System.Collections.Generic; namespace WebAutomation.BDD.Data { public class FeaturedMenu { public string MenuItemName { get; set; } public string MenuItemName_en { get; set; } public string MenuItemName_zh { get; set; } public string url { get; set; } public string LastModifiedDate { get; set; } } public class FeaturedMenuItems { public List<FeaturedMenu> Featured_Menu { get; set; } } }
이것은 내가 할 JSON입니다 .Json.JsonSerializationException : '을 deserialize 할 수 없습니다.현재 JSON 배열 (예 : [1,2,3])을 JSON 개체 (예 : { "name": "value"})가 올바르게 형식화하지 않아야하므로 형식이 'WebAutomation.BDD.Data.FeaturedMenuItems'로 변경됩니다. 을 수정하려면이 오류를 JSON 객체 (예 : { "name": "value"})로 변경하거나 컬렉션 인터페이스 (예 : ICollection, IList)를 구현하는 유형으로 비 직렬화 유형을 변경하십시오. JSON 배열에서 역 직렬화 할 수있는 List와 같은 List입니다. JsonArrayAttribute를 유형에 추가하여 이 JSON 배열에서 비 직렬화되도록 할 수도 있습니다. 경로 ', 줄 1, 위치 1'
문제를 파악할 수 없습니다. 어떤 도움을 주시면 감사하겠습니다.
하는 당신은'목록에 역 직렬화 할 필요가 '에서 설명한 바와 같이 [json으로 배열을 직렬화 할 수 없습니다 (예 : [1,2,3]) 유형이 JSON 객체를 필요로하기 때문에' '타입으로 (예 : { "name": "value"}) 올바르게 deserialize하려면 (https://stackoverflow.com/q/22557559/3744182). –
dbc