C# 中的JSON

数据序列化用的JSON但是c#中的JSON库有点多,(Json、LitJson、Newtonsoft.Json)

[System.Serializable]
class Data
{
    public byte a;
    public int i;
    public long l;
    public double d;
    public string s;
    public bool b;
    public Data data;
}
Data data = new Data();

string strJson = Newtonsoft.Json.JsonConvert.SerializeObject(data);

JOSN

#region JSON
{
    // 序列化对象
    string json1 = Json.JsonParser.Serialize(data);                         //  序列化无效

    // 反序列JSON
    var jObect = Json.JsonParser.Deserialize(strJson);                      // 反序列为 JsonObject (dynamic )
    var typeObject1 = Json.JsonParser.Deserialize<Data>(strJson);   // 反序列指定类型
    var dict = Json.JsonParser.FromJson(strJson);                           // 反序列为 Dictionary

    // 创建JSON对象 (dynamic)
    Dictionary<string, object> hash = new Dictionary<string, object>();
    dynamic j1 = new Json.JsonObject(hash);
    j1.name = "안녕하세요.hellohejOlátere.Halloこんにちは- ahoj- cześćBonjour";
    j1.value = 12;
    var json2 = Json.JsonParser.Serialize<Json.JsonObject>(j1);             // 序列化无效
    var json3 = Json.JsonParser.Serialize(j1);                              // 序列化无效
    var json4 = Json.JsonParser.ToJson(hash);                               // 序列化成功!!!
    // JOSN数组

}
#endregion

LitJson

#region LitJson
{
    // 序列化
    var json1 = LitJson.JsonMapper.ToJson(data);                     // 序列化成功

    // 反序列JSON
    var jObect = LitJson.JsonMapper.ToObject(strJson);                  // 反序列为 JsonData
    var typeObject = LitJson.JsonMapper.ToObject<Data>(strJson);    // 反序列指定类型

    // 创建JSON对象
    LitJson.JsonData jData = new LitJson.JsonData();
    jData["name"] = "안녕하세요.hellohejOlátere.Halloこんにちは- ahoj- cześćBonjour";
    jData["value"] = 12;
    var json2 = jData.ToJson();                                     // 序列化成功
    var json3 = LitJson.JsonMapper.ToJson(jData);                   // 序列化成功

    // Json数组
    var array = new LitJson.JsonData();
    array.SetJsonType(LitJson.JsonType.Array);
    array.Add(jData["name"]);
    array.Add(jData);
    var json4 = array.ToJson();

}
#endregion

Newtonsoft.Json

#region Newtonsoft.Json
{
    // 序列化
    var json1 = Newtonsoft.Json.JsonConvert.SerializeObject(data);                     // 序列化成功

    // 反序列JOSN
    var jObject = Newtonsoft.Json.JsonConvert.DeserializeObject(strJson);                // 反序列为 Linq.JObject
    var typeObject = Newtonsoft.Json.JsonConvert.DeserializeObject<Data>(strJson);  // 反序列指定类型

    // 创建JSON对象
    var j1 = new Newtonsoft.Json.Linq.JObject();
    j1["name"] = "안녕하세요.hellohejOlátere.Halloこんにちは- ahoj- cześćBonjour";
    j1.Add("value", 12);
    var json2 = Newtonsoft.Json.JsonConvert.SerializeObject(j1);
    // Json 数组
    Newtonsoft.Json.Linq.JArray array = new Newtonsoft.Json.Linq.JArray();
    array.Add(1);
    array.Add(j1);
    var json3 = Newtonsoft.Json.JsonConvert.SerializeObject(array);

}
#endregion

Newtonsoft.Json 支持最详尽,LitJson使用简单

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#,我们可以使用`Newtonsoft.Json`来进行JSON的序列化和反序列化,它是一个流行的JSON序列化库。 以下是一个简单的示例,说明如何使用`Newtonsoft.Json`将一个对象序列化为JSON字符串: ```csharp using Newtonsoft.Json; public class Person { public string Name { get; set; } public int Age { get; set; } } Person person = new Person { Name = "Tom", Age = 25 }; string json = JsonConvert.SerializeObject(person); Console.WriteLine(json); ``` 在上面的示例,我们定义了一个名为`Person`的类,它有两个属性:`Name`和`Age`。接着,我们创建了一个`Person`对象并将其序列化为JSON字符串,使用`JsonConvert.SerializeObject`方法实现。最后,我们将JSON字符串打印到控制台。 输出结果如下: ``` {"Name":"Tom","Age":25} ``` 反序列化JSON字符串也很简单。以下是一个示例,说明如何使用`Newtonsoft.Json`将JSON字符串反序列化为对象: ```csharp string json = @"{'Name':'Tom','Age':25}"; Person person = JsonConvert.DeserializeObject<Person>(json); Console.WriteLine("Name: " + person.Name); Console.WriteLine("Age: " + person.Age); ``` 在上面的示例,我们定义了一个名为`json`的字符串,它包含了一个`Person`对象的JSON表示。接着,我们使用`JsonConvert.DeserializeObject`方法将JSON字符串反序列化为`Person`对象。最后,我们打印了反序列化后的`Person`对象的属性。 输出结果如下: ``` Name: Tom Age: 25 ``` 需要注意的是,反序列化JSON字符串时,需要确保JSON字符串与要反序列化的对象类型匹配,否则会引发异常。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值