将字符串从webservice转换为LIST

时间:2014-08-06 13:28:44

标签: c# json string web-services

我从客户端收到一个原始字符串:

 { "\"wrapper\": {\"system\": { \"session\":\"ed6d1cc6-82f9-46e8-91bb-eae341a771cf\", \"ip\":\"\", \"station\":\"\"},{ \"personal_profile\": {\"suffix\":\"1096\",\"first_name\":\"Varvara\",\"middle_name\":\"\",\"last_name\":\"Terlouw\",\"street\":\"\",\"number\":\"\",\"add\":\"\",\"postal\":\"\",\"city\":\"\",\"state\":\"\",\"country\":\"\",\"birthday\":\"\",\"relation_type_id\":\"\"}},{ \"personal_contacts\": {\"contact_type_id_0\":\"409\",\"contact_0\":\"06-26096994\",\"contact_0\":\"on\"},{\"contact_type_id_0\":\"420\",\"contact_0\":\"jj@vv.com\",\"contact_0\":\"on\"},{\"contact_type_id_0\":\"\",\"contact_0\":\"\",\"contact_0\":\"on\"}},{ \"personal_work\": {}},{\"personal_connected\": {}},{\"personal_interests\": {}}}} "

我将字符串输入到我的网络服务中,需要将其转换为LIST<>所以我可以将数据处理到我的数据库,最好是我的类

2 个答案:

答案 0 :(得分:1)

这里和我之前使用过的类的旧例子作为简单的json序列化的另一个例子:

internal class CFingerPrint
{
    public string WanIP;
    public string MacAddress;      

    public string getClassEncrypted()
    {
        return new JavaScriptSerializer().Serialize(this);
    }

    public CFingerPrint getClassDecrypted(string sSerializedClass)
    {
        return new JavaScriptSerializer().Deserialize<CFingerPrint>(sSerializedClass);
    }
}

我使用相同的方式与其他语言进行了很多沟通,除了在JSON中存在问题的日期之外还没有任何问题,但这是另一个故事。

编辑:示例如何使用:

// create new class
var originalClass = new CFingerPrint();
// fill some data
originalClass.WanIP = "test1";
originalClass.MacAddress= "test2";

// serialize to json string
var classSerialized = originalClass.getClassEncrypted();

// create new class from string only
var newClass = new CFingerPrint().getClassDecrypted(classSerialized);

Console.WriteLine(newClass.WanIP); // output "test1"
Console.WriteLine(newClass.MacAddress); // output "test2"

有孩子的例子:

public class Manufacturer
{
    public string Name{ get; set; }
    public List<Motor> AvailaibleMotors{ get; set; }

    public string getClassSerialized()
    {
        return new JavaScriptSerializer().Serialize(this);
    }

    public ManufacturergetClassDeSerialized(string sSerializedClass)
    {
        return new JavaScriptSerializer().Deserialize<Manufacturer>(sSerializedClass);
    }
}

public class Motor
{
    public string Model { get; set; }
    public List<Voltage> Voltages { get; set; }
}

public class Voltage
{
    public int Volt { get; set; }
    public int Phase { get; set; }
    public int Frequency { get; set; }
}

所以制造商可以拥有一个或多个可以具有多个电压之一的电机,无论如何都可以完美运行。

答案 1 :(得分:0)

你也可以这样做。

public ActionResult jsonPull()
        {
            try
            {
                using (var webClient = new System.Net.WebClient())
                {
                    webClient.Encoding = Encoding.UTF8;
                    var json = webClient.DownloadString("example.com/json");
                    var parsed = JsonConvert.DeserializeObject(json);
                    return Json(parsed);
                }
            }
            catch (Exception e)
            {
                return Json(new { json = "error" });
            }              
        }