当前位置: 首页 > 知识库问答 >
问题:

JSON反序列化对象HTTPWebResponse

姚洲
2023-03-14

我试图获取我的Web请求JSON输出并解析它。这是输出

{
    "kind":"internal",
    "name":"SplashPageToggle_dg",
    "fullPath":"SplashPageToggle_dg",
    "generation":1255326,
    "selfLink":"https://link",
    "type":"stri ng",
    "records":[
        {
            "name":"enable_app1",
            "data":"0"
        },
        {
            "name":"enable_app2",
            "da ta":"0"
        },
        {
            "name":"enable_app3",
            "data":"0"
        },
        {
            "name":"enable_app4",
            "data":"0"
        },
        {
            "name":"enable_app5",
            "data":"0"
        },
        {
            "name":"enable_app6",
            "data":"1"
        },
        {
            "name":"enable_app7",
            "data":"0"
        },
        {
            "name":"enable_app8",
            "data":"0"
        },
        {
            "name":"enable_app9",
            "data":"0"
        },
        {
            "name":"enable_app10",
            "data":"0"
        }
    ]
}

我为这些结果创建了公共课程

public class RootObject
{
   public string kind { get; set; }
   public string name { get; set; }
   public string fullPath { get; set; }
   public int generation { get; set; }
   public string selfLink { get; set; }
   public string type { get; set; }
   public List<Record> records { get; set; }
}

public class Record
{
   public string name { get; set; }
   public string data { get; set; }
}

当我尝试反序列化Record类并选择名称时,我从RootObject类获得名称。这是我的密码

static void Main(string[] args)
{
   string url = "URL";    
   HttpWebRequest getRequest = (HttpWebRequest)WebRequest.Create(url);
   getRequest.Method = "GET";
   getRequest.Credentials = new NetworkCredential("UN", "PW");   
   ServicePointManager.ServerCertificateValidationCallback = new
      RemoteCertificateValidationCallback
      (
         delegate { return true; }
      );

   var getResponse = (HttpWebResponse)getRequest.GetResponse();    
   Stream newStream = getResponse.GetResponseStream();
   StreamReader sr = new StreamReader(newStream);    
   var result = sr.ReadToEnd();    
   var splashInfo = JsonConvert.DeserializeObject<Record>(result);

   Console.WriteLine(splashInfo.name);
   Console.ReadLine();
}

共有1个答案

翟柏
2023-03-14

您正试图将JSON反序列化到错误的类中。

更改此行:

var splashInfo = JsonConvert.DeserializeObject<Record>(result);

对此:

var splashInfo = JsonConvert.DeserializeObject<RootObject>(result);

小提琴:https://dotnetfiddle.net/2xR7hO

 类似资料:
  • 问题内容: 我有一堂课POJO 我有一个像 我正在使用Jackson ObjectMapper进行反序列化。在不创建任何其他父类的情况下如何获得? 如果不可能,是否有可能获得仅包含json字符串的第一个元素的对象,即在这种情况下和? 问题答案: 您首先需要获取数组 打印(带有)

  • 问题内容: 我对反序列化json对象几乎没有问题。我的json来自http网址: 我下载的JSON的屏幕 我不知道如何反序列化以动态创建按钮。我想出了如何用文本创建按钮,但是我不知道如何使用它们所具有的选项来创建按钮。我尝试在Windows Form应用程序中获取这些选项进行测试,但应用程序将崩溃。谢谢你的帮助。 问题答案: 您的课程应类似于: 然后,您应该可以使用Newtonsoft.Json反

  • 问题内容: 我在使用AJAX访问的Java服务器应用程序中有一个字符串。它看起来像以下内容: 当从服务器提取字符串时,是否有一种简单的方法可以将其转换为活动的JavaScript对象(或数组)?还是我必须手动拆分字符串并手动构建对象? 问题答案: 现代浏览器支持。 在不浏览器,您可以包括在库中。

  • 为了确保在我的RESTful web服务中来回发送的数据不冗余,每个嵌套对象都只序列化了它的ID(消息的用户只序列化了用户ID,因为客户端和服务器都已经知道用户的所有详细信息)。 序列化工作正常,产生以下效果: 问题:反序列化不会生成仅具有其ID的嵌套对象。生成的反序列化嵌套对象为空。 以下是前面提到的消息和用户对象。序列化“策略”是从此处指定的第三个选项中使用的:如何仅序列化Jackson的子级

  • 我对反序列化json对象没有什么问题。我的json来自超文本传输协议url: 我下载的JSON的屏幕 我不知道如何反序列化以动态创建按钮。我知道如何使用文本创建按钮,但我不知道如何使用它们拥有的选项制作它们。我尝试在Windows表单应用程序中获取这些选项进行测试,但应用程序会崩溃。谢谢您的帮助。

  • 我目前正在开发一个Java web应用程序,它使用Magento REST API公开的JSON数据。api返回的数据示例如下: 我的应用程序中有一个Java类,如下所示: 我想对数据进行反序列化,并将其转换为,但我总是得到以下错误: 这是我用来将JSON响应反序列化为ArrayList的语句行: 有人能分享一些见解吗?我看到一些例子,返回的JSON对象前面没有任何ID。那是因为我做错了什么吗?非