【问题标题】:Deserialization the json string gives Value cannot be null. Parameter name: s反序列化 json 字符串给出的值不能为空。参数名称:s
【发布时间】:2013-04-25 18:33:22
【问题描述】:
"[{\"active\":true,\"campaignId\":11401,\"createdtime\":1355919181000,\"description\":\"Ankit Demo Edited By Nirav\",\"enddate\":1363132800000,\"groupId\":10179,\"isdeleted\":false,\"lastmodifiedby\":10405,\"modifiedtime\":1362556187000,\"name\":\"Ankit Demo\",\"noofweek\":12,\"organizationId\":11153,\"startdate\":1355875200000,\"status\":2,\"userId\":11161},

{\"active\":true,\"campaignId\":21901,\"createdtime\":1358493958000,\"description\":\"sdadadasd\",\"enddate\":1359072000000,\"groupId\":10179,\"isdeleted\":false,\"lastmodifiedby\":10405,\"modifiedtime\":1358751277000,\"name\":\"NEW CAMP TEST\",\"noofweek\":1,\"organizationId\":10707,\"startdate\":1358467200000,\"status\":4,\"userId\":10405},

{\"active\":true,\"campaignId\":33601,\"createdtime\":1361441582000,\"description\":\"dasdsadasd\",\"enddate\":1363219200000,\"groupId\":10179,\"isdeleted\":false,\"lastmodifiedby\":10405,\"modifiedtime\":1361795632000,\"name\":\"BHAVIK UTC\",\"noofweek\":3,\"organizationId\":10707,\"startdate\":1361404800000,\"status\":2,\"userId\":10405}]"

我的字符串变量中有Above Jsong String ..我想将此json字符串转换为我的自定义类的对象..我已经创建了自定义类.. 以下是我从 HttpWebResponse 获取 json 响应并在我的自定义类的列表对象中转换的代码

 HttpWebResponse response = default(HttpWebResponse);
        try
        {
            response = (HttpWebResponse)request.GetResponse();
            //    response.Close()
            string sResult = null;

            using (StreamReader responseReader = new StreamReader(response.GetResponseStream()))
            {
                sResult = responseReader.ReadToEnd();

            }
            response.Close();
            Console.WriteLine(sResult);

  List<Class1> myDeserializedObjList = (List<Class1>)Newtonsoft.Json.JsonConvert.DeserializeObject(Request[sResult], typeof(List<Class1>));
          int counts=  myDeserializedObjList.Count;

        }

但它给了我错误

Value cannot be null.
Parameter name: s

谁能指导我如何解决这个问题?

这是我想从 json 字符串中分配对象的自定义类 使用系统; 使用 System.Collections.Generic; 使用 System.Linq; 使用 System.Web;

/// <summary>
/// Summary description for Class1
/// </summary>
public class Class1
{

    private Boolean active;

    public Boolean Active
    {
        get { return active; }
        set { active = value; }
    }
    private long campaignId;

    public long CampaignId
    {
        get { return campaignId; }
        set { campaignId = value; }
    }
    private long createdtime;

    public long Createdtime
    {
        get { return createdtime; }
        set { createdtime = value; }
    }
    private string description;

    public string Description
    {
        get { return description; }
        set { description = value; }
    }
    private long enddate;

    public long Enddate
    {
        get { return enddate; }
        set { enddate = value; }
    }
    private long groupId;

    public long GroupId
    {
        get { return groupId; }
        set { groupId = value; }
    }
    private Boolean isdeleted;

    public Boolean Isdeleted
    {
        get { return isdeleted; }
        set { isdeleted = value; }
    }
    private long modifiedtime;

    public long Modifiedtime
    {
        get { return modifiedtime; }
        set { modifiedtime = value; }
    }
    private long lastmodifiedby;

    public long Lastmodifiedby
    {
        get { return lastmodifiedby; }
        set { lastmodifiedby = value; }
    }
    private string name;

    public string Name
    {
        get { return name; }
        set { name = value; }
    }
    private int noofweek;

    public int Noofweek
    {
        get { return noofweek; }
        set { noofweek = value; }
    }
    private long organizationId;

    public long OrganizationId
    {
        get { return organizationId; }
        set { organizationId = value; }
    }
    private long startdate;

    public long Startdate
    {
        get { return startdate; }
        set { startdate = value; }
    }
    private Boolean status;

    public Boolean Status
    {
        get { return status; }
        set { status = value; }
    }
    private long userId;

    public long UserId
    {
        get { return userId; }
        set { userId = value; }
    }



    public Class1()
    {


    }
}

【问题讨论】:

    标签: c# asp.net json deserialization json.net


    【解决方案1】:

    如果您的 Request[sResult] 是您提到的 json 字符串。 试试

    Newtonsoft.Json.JsonConvert.DeserializeObject<List<Class1>>(Request[sResult]);
    

    编辑,我的意思是:

    List<Class1> myDeserializedObjList =Newtonsoft.Json.JsonConvert.DeserializeObject<List<Class1>>(Request[sResult]);
    

    【讨论】:

    • 如果您的第一个代码片段代表 sResult 字符串。尝试: List myDeserializedObjList =Newtonsoft.Json.JsonConvert.DeserializeObject>(sResult);因为我已经使用上次从 nuget 安装的 Newtonsoft Json 版本完成了代码片段的反序列化 ...
    • 我已经尝试过了..但问题来自我认为的“\”..我刚刚放置了响应的简单静态字符串..然后它成功运行..但是使用 sResult 值时从网络响应分配,然后给出错误,
    • 错误转换值"[{" 输入给我以下错误,。
    • 尝试使用以下方法将 StreamReader 编码为 UTF8: using (StreamReader responseReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8)) { sResult = responseReader.ReadToEnd();因为您的代码片段中的 json 运行良好。答案围绕着 sResult 字符串。如果这个看起来一样有snipet,那应该工作^^
    • could not cast or convert from system.string to system.collections.generic.list 1 这是我得到的错误
    猜你喜欢
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 2019-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-11
    相关资源
    最近更新 更多