Raw JSON on PocketItem Model
Implementation of setting the raw JSON representation of a PocketItem to the PocketSharp model
This commit is contained in:
@@ -13,6 +13,7 @@ namespace PocketSharp.Models
|
||||
[JsonObject]
|
||||
[ImplementPropertyChanged]
|
||||
[DebuggerDisplay("Uri = {Uri}, Title = {Title}")]
|
||||
|
||||
public class PocketItem
|
||||
{
|
||||
/// <summary>
|
||||
@@ -352,5 +353,14 @@ namespace PocketSharp.Models
|
||||
{
|
||||
get { return Images != null && Images.Count > 0 ? Images[0] : null; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets and sets the JSON the model was deserialized from
|
||||
/// </summary>
|
||||
/// <value>
|
||||
/// Model's original JSON representation
|
||||
/// </value>
|
||||
[JsonIgnore]
|
||||
public string Json { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -227,6 +227,7 @@ namespace PocketSharp
|
||||
},
|
||||
Converters =
|
||||
{
|
||||
new PocketItemConverter(),
|
||||
new BoolConverter(),
|
||||
new UnixDateTimeConverter(),
|
||||
new NullableIntConverter(),
|
||||
|
||||
@@ -3,6 +3,7 @@ using Newtonsoft.Json.Converters;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using PocketSharp.Models;
|
||||
|
||||
namespace PocketSharp
|
||||
{
|
||||
@@ -129,7 +130,6 @@ namespace PocketSharp
|
||||
JObject jObject;
|
||||
List<T> result = new List<T>();
|
||||
T target;
|
||||
|
||||
// object is an array
|
||||
if (reader.TokenType == JsonToken.StartArray)
|
||||
{
|
||||
@@ -152,8 +152,7 @@ namespace PocketSharp
|
||||
// Populate the object properties
|
||||
foreach (KeyValuePair<string, JToken> item in jObject)
|
||||
{
|
||||
target = new T();
|
||||
serializer.Populate(item.Value.CreateReader(), target);
|
||||
target = serializer.Deserialize<T>(item.Value.CreateReader());
|
||||
result.Add(target);
|
||||
}
|
||||
|
||||
@@ -169,5 +168,28 @@ namespace PocketSharp
|
||||
{
|
||||
return new List<T>();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
public class PocketItemConverter : CustomCreationConverter<PocketItem>
|
||||
{
|
||||
|
||||
public override object ReadJson(Newtonsoft.Json.JsonReader reader, Type objectType, object existingValue, Newtonsoft.Json.JsonSerializer serializer)
|
||||
{
|
||||
|
||||
var jObject = JObject.ReadFrom(reader);
|
||||
var pocketItem = new PocketItem();
|
||||
serializer.Populate(jObject.CreateReader(), pocketItem);
|
||||
pocketItem.Json = jObject.ToString();
|
||||
|
||||
return pocketItem;
|
||||
}
|
||||
|
||||
public override PocketItem Create(Type objectType)
|
||||
{
|
||||
return new PocketItem();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user