나는 이상한 문제에 직면 해있다.Newtosoft, PCL & Xamarin.Droid
내 PCL 프로젝트에있는 일반적인 코드가 있습니다. 이 코드는 현재 내 Windows Phone 프로젝트에서 일하고 있지만 Android 용으로는 제대로 작동하지 않습니다. 여기
코드 : (문제가 CreateListFriend이다이 방법은)
public class Friend : IFriend<User>
{
public int Id { get; set; }
public string UserId { get; set; }
public virtual User User { get; set; }
private static volatile Friend instance;
private static object syncRoot = new Object();
private Friend() { }
public static Friend Instance
{
get
{
if (instance == null)
{
lock (syncRoot)
{
if (instance == null)
instance = new Friend();
}
}
return instance;
}
}
/// <summary>
/// Populate friend instance
/// </summary>
/// <param name="json">Json friend string</param>
public void PopulateFriend(string json)
{
if (!String.IsNullOrEmpty(json))
{
var resultObj = JsonConvert.DeserializeObject<Friend>(json);
Friend.Instance.Id = resultObj.Id;
Friend.Instance.UserId = resultObj.UserId;
}
}
/// <summary>
/// Create friend list from json
/// </summary>
/// <param name="json">json string</param>
/// <returns>friend list</returns>
public List<Friend> CreateListFriend(string json)
{
List<Friend> resultObj = new List<Friend>();
if (!String.IsNullOrEmpty(json))
{
resultObj = JsonConvert.DeserializeObject<List<Friend>>(json);
}
return resultObj;
}
}
이전 그림에서 볼 수 있듯이, Json.net는 "직렬화"하지만 할 수있는 개체 친구 donc 올바른 "필드"를 가지고 ....
나는 이미 클래스를 억제하고 그것을 다시 만들려고 노력했다 ... 나는 동일한 필드를 가진 구조를 이미 만들었고, 모든 json은 올바르게 deserialize하지만 나는 해야 할 것 이런 식으로하고 싶지 않습니다.
friend.json :
{
"id": 5,
"userId": 6
}
friends.json :
는
왜'Friend' 클래스는 싱글 톤에 대한
감사합니다? 싱글 톤 (singleton)의 목록은 싱글 톤 (singleton)이 '친구 (Friend)'인스턴스를 하나만 갖고 싶어한다는 것을 의미하기 때문에 저에게 의미가 없습니다. 왜 그것이 필요한지 명확히 설명해 주시겠습니까? 추가로 - 내가 아는 한 - JsonConvert는 public 생성자가 필요하고 여러분은 그것을 private으로 정의한다. 하지만 개인 생성자에서 작동하는 경우 문제는 싱글 톤을 사용하고 모든 목록 항목이 마지막으로 deserialized 된 인스턴스가 될 수 있습니다. – Gabor
답장을 보내 주셔서 감사합니다. 친구의 싱글 톤은 내가 변하지 않는 아키텍처 실수였습니다. 친구 싱글 톤을 삭제하지만 지금은이 오류가 있습니다 "Newtonsoft.Json.JsonSerializationException : Cheer_up_app.Model.Friend 유형에 사용할 생성자를 찾을 수 없습니다. 클래스에 기본 생성자, 인수가있는 생성자 또는 생성자가 표시되어 있어야합니다. JsonConstructor 특성을 사용하십시오. 경로 '[0]. 사용자', 줄 1, 위치 9 " – OrcusZ