官网地址:https://www.newtonsoft.com/json
下载地址:https://github.com/JamesNK/Newtonsoft.Json/releases
源码地址:https://github.com/JamesNK/Newtonsoft.Json
// 序列化对象
Product product = new Product();
product.Name = "Apple";
product.Expiry = new DateTime(2008, 12, 28);
product.Sizes = new string[] { "Small" };
string json = JsonConvert.SerializeObject(product);
// {
// "Name": "Apple",
// "Expiry": "2008-12-28T00:00:00",
// "Sizes": [
// "Small"
// ]
// }
// 反序列化
string json = @"{
'Name': 'Bad Boys',
'ReleaseDate': '1995-4-7T00:00:00',
'Genres': [
'Action',
'Comedy'
]
}";
Movie m = JsonConvert.DeserializeObject<Movie>(json);
string name = m.Name;
// Bad Boys
public class NewtonsoftJsonTest : MonoBehaviour
{
void Start()
{
string json = @"{
'name': null
}";
Player player = JsonConvert.DeserializeObject<Player>(json);
print(player.name);
}
public class Player
{
[JsonRequired]
public string name;
}
}
// JsonSerializationException:
// Required property 'name' expects a value but got null. Path '', line 1, position 27.
public class NewtonsoftJsonTest : MonoBehaviour
{
void Start()
{
string json = @"{
'age': 12
}";
Player player = JsonConvert.DeserializeObject<Player>(json);
print(player.name);
}
public class Player
{
[JsonRequired]
public string name;
}
}
// JsonSerializationException:
// Required property 'name' not found in JSON. Path '', line 3, position 13.
public class NewtonsoftJsonTest : MonoBehaviour
{
void Start()
{
string json = @"{
'name': 'Steve'
}";
Player player = JsonConvert.DeserializeObject<Player>(json);
print(player.name);
}
public class Player
{
[JsonRequired]
public string name;
}
}
// Steve
// 序列化时也会报错
public class NewtonsoftJsonTest : MonoBehaviour
{
void Start()
{
Player player = new Player();
print(JsonConvert.SerializeObject(player));
}
public class Player
{
[JsonRequired]
public string name;
}
}
// JsonSerializationException:
// Cannot write a null value for property 'name'. Property requires a value. Path ''.
public class NewtonsoftJsonTest : MonoBehaviour
{
void Start()
{
string json = @"{
'name': 'Jack',
'xingming': 'Steve'
}";
Player player = JsonConvert.DeserializeObject<Player>(json);
print(player.name);
}
public class Player
{
[JsonProperty("xingming")]
public string name;
}
}
// Steve
public class NewtonsoftJsonTest : MonoBehaviour
{
void Start()
{
Player player = new Player();
print(JsonConvert.SerializeObject(player));
}
public class Player
{
[JsonProperty("xingming")]
public string name;
}
}
// {"xingming":null}
public class NewtonsoftJsonTest : MonoBehaviour
{
void Start()
{
string json = @"{
'name': 'Steve'
}";
Player player = JsonConvert.DeserializeObject<Player>(json);
print(player.name);
}
public class Player
{
[JsonIgnore]
public string name;
}
}
// Null
public class NewtonsoftJsonTest : MonoBehaviour
{
void Start()
{
Player player = new Player();
player.name = "Steve";
print(JsonConvert.SerializeObject(player));
}
public class Player
{
[JsonIgnore]
public string name;
}
}
// {}
public class NewtonsoftJsonTest : MonoBehaviour
{
void Start()
{
string json = @"{
'name': 'Steve'
}";
Player player = JsonConvert.DeserializeObject<Player>(json);
print(JsonConvert.SerializeObject(player.ext));
}
public class Player
{
[JsonExtensionData]
public Dictionary<string, object> ext;
}
}
// {"name":"Steve"}