3

我正在创建一个灵活的框架来为第三方开发人员创建和存储设置。

我们做出的一个更好的选择是创建一个系统,让开发人员使用 JSON 创建自己的设置,然后简单地序列化对象。

IE

public class YammerConfig
{
    public string yammerClientId { get; set; }
    public string yammerNetwork { get; set; }

    public YammerConfig(string js)
    {
        var ser = new JavaScriptSerializer();
        var sam = ser.Deserialize<YammerConfig>(js);
        yammerClientId = sam.yammerClientId;
        yammerNetwork = sam.yammerNetwork;
    }
}

这是一种将设置存储在数据库中的有效方法,无需为独特的信息集重新配置新表。

我很想更进一步,就像 JavaScript 本身所做的那样,动态创建不需要手动序列化的对象。

json.parse是否可以在 .NET C#中创建等价物?

4

2 回答 2

3

为什么不使用扩展方法

例如。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Script.Serialization;

namespace Stackoverflow.Helpers
{
    public static class JsonHelper
    {
        private static JavaScriptSerializer ser = new JavaScriptSerializer();
        public static T ToJSON<T>(this string js) where T : class
        {
            return ser.Deserialize<T>(js);
        }

        public static string JsonToString(this object obj)
        {
            return ser.Serialize(obj);
        }
    }
}

便于使用

//Deserialize
string s = "{yammerClientId = \"1\",yammerNetwork = \"2\"}";    
YammerConfig data = s.ToJSON<YammerConfig>();

//Serialize
string de = data.JsonToString();
于 2013-10-10T07:38:09.733 回答
1

你能用Newtonsoft.Json( home ) 很简单地进行反序列化吗?它只是一条线,比内置的线好得多。

var settings = JsonConvert.DeerializeObject<YammerSettings>(json);
var json     = JsonConvert.SerializeObject(yammerSettingsObject);

// you can also serialized and deserialize anon objects, control formatting, 
// do dictinaries and lists directly, datasets, and on and on

查看此网站以获取更多示例

如果这不涵盖您正在寻找的内容,您能更具体吗?这是我们不再使用的唯一 JSON 库,它可以处理所有事情。

于 2013-10-16T08:10:09.073 回答