몇 가지 속성을 직렬화해야합니다. 나는 JSON으로 직렬화
NewtonSoft
에서 JSON 시리얼 라이저를 사용하여 내 코드 :[DataContract]
public class ImageManipulatorViewModel : BaseViewModel
{
[DataMember]
public ObservableCollection<Collage> ImageList
{
get { return this.imageList; }
set
{
this.imageList = value;
base.RaisePropertyChanged("ImageList");
}
}
var storageFolder = ApplicationData.Current.LocalFolder;
var sampleFile = await storageFolder.CreateFileAsync("MyProject.Collage", CreationCollisionOption.ReplaceExisting);
string l =JsonConvert.SerializeObject(this.ImageList);
await FileIO.WriteTextAsync(sampleFile, l);
string tres = JsonConvert.DeserializeObject(l).ToString();
this.ImageList.Clear();
this.ImageList = JsonConvert.DeserializeObject<ObservableCollection<Collage>>(tres.ToString());
}
public class Collage
{
public Thickness Position { get; set; }
public WriteableBitmap Image { get; set; }
}
내가 디스크에 파일을 가지고,하지만 난 직렬화 JSON을하려고 할 때 오류가 있습니다. Could not create an instance of type Windows.Storage.Streams.IBuffer. Type is an interface or abstract class and cannot be instantiated. Path '[0].Image.PixelBuffer', line 10, position 23.
JSON 파일
[{"Position":{"Left":0.0,"Top":0.0,"Right":0.0,"Bottom":0.0},"Image":{"PixelBuffer":{},"PixelHeight":1600,"PixelWidth":2560,"Dispatcher":{"HasThreadAccess":true,"CurrentPriority":0}}},{"Position":{"Left":490.0,"Top":0.0,"Right":0.0,"Bottom":0.0},"Image":{"PixelBuffer":{},"PixelHeight":1600,"PixelWidth":2560,"Dispatcher":{"HasThreadAccess":true,"CurrentPriority":0}}}]
What`s 내 문제?
는 전체 JSON을 게시하시기 바랍니다 수 있습니까? 콜라주 수업도? – sachin
@sachin 코드를 업데이트하고 콜라주를 추가했습니다 – SmiLe
이미 ImageList가있는 경우 직렬화 한 것과 동일한 문자열에서 다시로드하는 이유는 무엇입니까? – AVK