현재 JSON 개체(예: {"name":"value"})를 '시스템' 유형으로 역직렬화할 수 없습니다.컬렉션포괄적인.리스트 1
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Facebook;
using Newtonsoft.Json;
namespace facebook
{
class Program
{
static void Main(string[] args)
{
var client = new FacebookClient(acc_ess);
dynamic result = client.Get("fql", new { q = "select target_id,target_type from connection where source_id = me()"});
string jsonstring = JsonConvert.SerializeObject(result);
//jsonstring {"data":[{"target_id":9503123,"target_type":"user"}]}
List<RootObject> datalist = JsonConvert.DeserializeObject<List<RootObject>>(jsonstring);
}
public class Datum
{
public Int64 target_id { get; set; }
public string target_type { get; set; }
}
public class RootObject
{
public List<Datum> data { get; set; }
}
}
}
현재 JSON 개체(예: {"name":"value"})를 '시스템' 유형으로 역직렬화할 수 없습니다.컬렉션포괄적인.리스트1 [페이스북]Program+RootObject]'는 JSON 배열(예: [1, 2, 3])이 필요하기 때문입니다.이 오류를 수정하려면 JSON을 JSON 배열(예: [1, 2, 3])로 변경하거나 일반이 되도록 역직렬화 유형을 변경합니다.다음과 같은 NET 유형(예: 정수, 배열 또는 목록과 같은 수집 유형이 아님)
다른 글도 봤어요.
내 아들은 이렇게 생겼어
{"data":[{"target_id":9503123,"target_type":"user"}]}
명확히 하기 위해 @SLaks의 답변 외에 다음 행을 변경해야 합니다.
List<RootObject> datalist = JsonConvert.DeserializeObject<List<RootObject>>(jsonstring);
다음과 같은 방법으로 이행합니다.
RootObject datalist = JsonConvert.DeserializeObject<RootObject>(jsonstring);
이 에러 메세지는, 매우 알기 어렵기 때문에, 1개의 오브젝트를 컬렉션으로 역직렬화 할 수 없습니다( )List<>
).
싱글로 역직렬화 하고 싶다.RootObject
.
Json을 바꿔볼 수 있나요?data
아래와 같은 키?
[{"target_id":9503123,"target_type":"user"}]
나도 그런 일이 있었어, 왜냐면 난 그 일을 겪으려고 노력했거든.IEnumerable
하지만 그 반응은 하나의 값을 가지고 있었다.응답 데이터 목록인지 확인하십시오.문제를 해결하기 위해 사용한 (api url get) 행은 다음과 같습니다.
HttpResponseMessage response = await client.GetAsync("api/yourUrl");
if (response.IsSuccessStatusCode)
{
IEnumerable<RootObject> rootObjects =
awaitresponse.Content.ReadAsAsync<IEnumerable<RootObject>>();
foreach (var rootObject in rootObjects)
{
Console.WriteLine(
"{0}\t${1}\t{2}",
rootObject.Data1, rootObject.Data2, rootObject.Data3);
}
Console.ReadLine();
}
도움이 됐으면 좋겠다.
진짜 문제는 Facebook Client Get 메서드에서 다이내믹 리턴 타입을 사용하고 있다는 것입니다.또한 직렬화 방법을 사용하더라도 JSON 변환기는 그 후 이 개체를 직렬화 해제할 수 없습니다.
설치 대상:
dynamic result = client.Get("fql", new { q = "select target_id,target_type from connection where source_id = me()"});
string jsonstring = JsonConvert.SerializeObject(result);
뭐 그런 거죠.
string result = client.Get("fql", new { q = "select target_id,target_type from connection where source_id = me()"}).ToString();
다음으로 DiserializeObject 메서드를 사용할 수 있습니다.
var datalist = JsonConvert.DeserializeObject<List<RootObject>>(result);
이게 도움이 됐으면 좋겠다.
public partial class tree
{
public int id { get; set; }
public string name { get; set; }
public string sciencename { get; set; }
public int familyid { get; set; }
}
private async void PopulateDataGridView()
{
//For Single object response
tree treeobj = new tree();
treeobj = JsonConvert.DeserializeObject<tree>(Response);
//For list of object response
List<tree> treelistobj = new List<tree>();
treelistobj = JsonConvert.DeserializeObject<List<tree>>(Response);
//done
}
언급URL : https://stackoverflow.com/questions/21358493/cannot-deserialize-the-current-json-object-e-g-namevalue-into-type-sy
'programing' 카테고리의 다른 글
특정 요소의 표시 여부 테스트 (0) | 2023.03.22 |
---|---|
대응: 모든 항목을 재작성하지 않고 목록의 항목 하나를 업데이트합니다. (0) | 2023.03.22 |
WebStorm 2018.1.4 + ESLint: TypeError: 이것.CliEngine은 생성자가 아닙니다. (0) | 2023.03.22 |
Fetch API에서 권한 부여 헤더 설정 (0) | 2023.03.22 |
Wordpress/Apache - 이미지 파일 이름에 유니코드 문자가 포함된 404 오류 (0) | 2023.03.22 |