بررسی مقدمات کتابخانهی JSON.NET
نویسنده: وحید نصیری
تاریخ: ۱۳۹۳/۰۶/۱۳ ۱۹:۰
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
PM> install-package Newtonsoft.Json
var roles = new List<string>
{
"Admin",
"User"
};
string json = JsonConvert.SerializeObject(roles, Formatting.Indented); var jsonString = JsonConvert.SerializeObject(new
{
Id =1,
Name = "Test"
}, Formatting.Indented); var jsonData = JsonConvert.SerializeObject(new
{
Id = 1,
Name = "Test",
DateTime = DateTime.Now
}, new JsonSerializerSettings
{
Formatting = Formatting.Indented,
Converters =
{
new JavaScriptDateTimeConverter()
}
}); {
"Id": 1,
"Name": "Test",
"DateTime": new Date(1409821985245)
} using (var stream = File.CreateText(@"c:\output.json"))
{
var jsonSerializer = new JsonSerializer
{
Formatting = Formatting.Indented
};
jsonSerializer.Serialize(stream, new
{
Id = 1,
Name = "Test",
DateTime = DateTime.Now
});
} public class User
{
public int Id { set; get; }
public string Name { set; get; }
public DateTime DateTime { set; get; }
} var user = JsonConvert.DeserializeObject<User>(jsonData);
var user = JsonConvert.DeserializeObject<User>(jsonData, new JsonSerializerSettings
{
Converters = { new JavaScriptDateTimeConverter() }
}); JsonConvert.PopulateObject(jsonData, user);
var jsonData = JsonConvert.SerializeObject(object, new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore,
Formatting = Formatting.Indented
}); public class Employee
{
public string Name { set; get; }
}
public class Manager : Employee
{
public IList<Employee> Reports { set; get; }
} var employee = new Employee { Name = "User1" };
var manager1 = new Manager { Name = "User2" };
var manager2 = new Manager { Name = "User3" };
manager1.Reports = new[] { employee, manager2 };
manager2.Reports = new[] { employee }; var list = JsonConvert.SerializeObject(manager1, Formatting.Indented);
{
"Reports": [
{
"Name": "User1"
},
{
"Reports": [
{
"Name": "User1"
}
],
"Name": "User3"
}
],
"Name": "User2"
} var list = JsonConvert.SerializeObject(manager1, new JsonSerializerSettings
{
Formatting = Formatting.Indented,
TypeNameHandling = TypeNameHandling.Objects,
PreserveReferencesHandling = PreserveReferencesHandling.Objects
});
{
"$id": "1",
"$type": "JsonNetTests.Manager, JsonNetTests",
"Reports": [
{
"$id": "2",
"$type": "JsonNetTests.Employee, JsonNetTests",
"Name": "User1"
},
{
"$id": "3",
"$type": "JsonNetTests.Manager, JsonNetTests",
"Reports": [
{
"$ref": "2"
}
],
"Name": "User3"
}
],
"Name": "User2"
} public class User
{
public int Id { set; get; }
[JsonIgnore]
public string Name { set; get; }
public DateTime DateTime { set; get; }
} [JsonProperty(PropertyName = "m_name", NullValueHandling = NullValueHandling.Ignore)]
public string Name { set; get; } [JsonObject(MemberSerialization.OptIn)]
public class User
{
public int Id { set; get; }
[JsonProperty]
public string Name { set; get; }
public DateTime DateTime { set; get; }
} [JsonConverter(typeof(JavaScriptDateTimeConverter))]
public DateTime DateTime { set; get; } public class HtmlColor
{
public int Red { set; get; }
public int Green { set; get; }
public int Blue { set; get; }
}
var colorJson = JsonConvert.SerializeObject(new HtmlColor
{
Red = 255,
Green = 0,
Blue = 0
}, Formatting.Indented); public class HtmlColorConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return objectType == typeof(HtmlColor);
}
public override object ReadJson(JsonReader reader, Type objectType,
object existingValue, JsonSerializer serializer)
{
throw new NotSupportedException();
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
var color = value as HtmlColor;
if (color == null)
return;
writer.WriteValue("#" + color.Red.ToString("X2")
+ color.Green.ToString("X2") + color.Blue.ToString("X2"));
}
} var colorJson = JsonConvert.SerializeObject(new HtmlColor
{
Red = 255,
Green = 0,
Blue = 0
}, new JsonSerializerSettings
{
Formatting = Formatting.Indented,
Converters = { new HtmlColorConverter() }
}); return Content(JsonConvert.SerializeObject(obj));
return new ContentResult
{
Content = JsonConvert.SerializeObject(obj),
ContentType = "application/json"
}; public static T DeserializeFromFile<T>(string filePath, JsonSerializerSettings settings = null)
{
if (!File.Exists(filePath))
return default(T);
using (var fileStream = File.OpenRead(filePath))
{
using (var streamReader = new StreamReader(fileStream))
{
using (var reader = new JsonTextReader(streamReader))
{
var serializer = settings == null ? JsonSerializer.Create() : JsonSerializer.Create(settings);
return serializer.Deserialize<T>(reader);
}
}
}
}
public static void SerializeToFile(string filePath, object data, JsonSerializerSettings settings = null)
{
using (var fileStream = new FileStream(filePath, FileMode.Create))
{
using (var streamReader = new StreamWriter(fileStream))
{
using (var reader = new JsonTextWriter(streamReader))
{
var serializer = settings == null ? JsonSerializer.Create() : JsonSerializer.Create(settings);
serializer.Serialize(reader, data);
}
}
}
}