Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wcf c#服务中的Json流到数组_C#_Json_Wcf_Deserialization - Fatal编程技术网

Wcf c#服务中的Json流到数组

Wcf c#服务中的Json流到数组,c#,json,wcf,deserialization,C#,Json,Wcf,Deserialization,我对C#真的很差,希望你能帮我做以下几件事;我目前正在向我的WCF Web服务传递一个Json数组。我需要获取json数组并将其插入列表中。我不知道用C#反序列化。请向我建议实现这一目标的最佳方式。我的代码如下所示: public String UpdateOrderAddress(Stream userInfo) { try { StreamReader reader = new StreamReade

我对C#真的很差,希望你能帮我做以下几件事;我目前正在向我的WCF Web服务传递一个Json数组。我需要获取json数组并将其插入列表中。我不知道用C#反序列化。请向我建议实现这一目标的最佳方式。我的代码如下所示:

  public String UpdateOrderAddress(Stream userInfo)
  {
        try
        {               
           StreamReader reader = new StreamReader(userInfo);
           string JSONdata = reader.ReadToEnd();
           if (JSONdata == null)
           {                    
                return "null";
           }                        

           return JSONdata;     // Success !
        }
        catch (Exception e)
        {
            return e.ToString();
        }
  }
这是我从读卡器获取的字符串中的数据

[{"date":"2013-02-22 15:30:374:021","id":"1","description":"test","name":"test"},
"date":"2013-02-25 11:56:926:020","id":"2","description":"ghy","name":"fhh"},
"date":"2013-02-25 11:56:248:026","id":"3","description":"ghfm","name":"run"}]

您可以创建一个具有所需属性的代表性类来保存值并使用该类。调用指定类型的方法将JSON反序列化到代码中

类名中的链接供参考。

您可以使用Newtonsoft.Json库。您需要做的只是:

List<YourClass> yourClassList = JsonConvert.DeserializeObject<List<YourClass>>(JSONdata);
List yourClassList=JsonConvert.DeserializeObject(JSONdata);

您可以找到更多信息,即使是示例

您发布的代码也没有显示您是如何尝试反序列化json字符串的,因此我并不真正了解此处的相关性,但无论如何,这是如何将json反序列化为具体的C#类的

  • 创建一个与Javascript对象结构匹配的类,如下所示:

    public class Data
    {
      public string  Date {get;set;}
      public int ID {get;set;}
      public string Description {get;set;}
      public string Name {get;set;}
    }
    
  • 使用as so对其进行反序列化:

    你会得到一个漂亮的
    列表

    还要注意,我没有为Javascript对象中相应的
    date
    字段使用DateTime字段,原因是示例日期不是有效的DateTime,或者至少无法从该字符串表示创建
    DateTime
    对象。例如,“15:30:374:021”毫无意义-我会想象374是秒字段


    您需要添加对System.Web.Extensions的引用才能使用JavascriptSerializer

    您尝试过JSON.net吗?下面是一个示例:
    var deserializedData = new JavaScriptSerializer().Deserialize<List<Data>>(jsonString);
    
    string json = @"[{""date"":""2013-02-22 15:30:374:021"",""id"":""1"",""description"":""test"",""name"":""test""},
       {""date"":""2013-02-25 11:56:926:020"",""id"":""2"",""description"":""ghy"",""name"":""fhh""},
       {""date"":""2013-02-25 11:56:248:026"",""id"":""3"",""description"":""ghfm"",""name"":""run""}]";
    
    var deserializedData = new JavaScriptSerializer().Deserialize<List<Data>>(json);