回答  json de-serialise不同的根对象

Aussieboy.

众所周知的成员
加入
9月7日,2020年
消息
53
编程经验
Beginner
你好,
我有使用root和rootobject通过JSON读取值的代码。
它可以很好。

但是,我现在想用不同的程序写入另一个程序的另一个系统。
我尝试了下面的东西。哪个我得到了'对象引用未设置为对象的实例。'
我检查了我设置了我的课程的方式,他们似乎没问题。可能是我没有拿起东西。
是我想要完全错误的,有更好的方法吗?我在其他网站上阅读了一些帖子,但是目前尚未得到他们的建议。
谢谢,

Code:
QRootObject QRoot = JsonConvert.DeserializeObject<QRootObject>(response.Content); //Newtonsoft.Json.
 

sh

众所周知的成员
加入
2018年9月5日
消息
1,982
编程经验
10+
展示你的 相关的 代码所以我们可以了解你想要做的事情?
写到另一个系统
没有意义。什么其他系统。解释?
我检查了我设置了我的课程的方式,他们似乎没问题。
谁的标准?你把自己作为一个初学者,所以你怎么知道你没有犯错?
是我想要完全错误的,有更好的方法吗?
我不知道,你尚未向我们解释你是如何解决这个问题。当您阅读JSON文件时,您将读入什么?
  • StreamReader?
  • MemoryReader?
  • 根json文件的类对象?
然后,一旦您拥有它,您就有究竟您想要与该数据有关的问题。我们所知道的越多,我们就越有用。当然,我们可以整天抛弃你的代码,但如果我们不知道你想要做什么,那就是那么重要。
 

Aussieboy.

众所周知的成员
加入
9月7日,2020年
消息
53
编程经验
Beginner
嗨,是的,我怀疑你的权利。
我注意到成功设置为真实。
所以似乎工作。

 null1.png.


这就是我所做的。原始rootobject工作正常,但麻烦在qrotobject。

 null2.png


谢谢,
 

附件

  •  null1.png.
    null1.png.
    22.9 KB · Views: 10

Aussieboy.

众所周知的成员
加入
9月7日,2020年
消息
53
编程经验
Beginner
嗨,通过查看JSON Visualizer。我看到一些关于我有一个关于这些问题的营业问题的东西。
有许多记录,我想知道它们是如何处理的。
杰森 Viewiser给了我一些指示。"[x]",有效载荷并不表明这一点,到目前为止,有效载荷一直是我必须离开的一切。
到目前为止,我从来没有达成了许多记录的这种情况。
那么这些在代码中如何处理?
谢谢,

 null3.png.
 

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,893
地点
切萨皮克,va.
编程经验
10+
在未来,请在代码标签中发布您的代码,而不是屏幕截图。
 

Aussieboy.

众所周知的成员
加入
9月7日,2020年
消息
53
编程经验
Beginner
你好,
我猜到了这样的东西。但是,如果你不知道你会得到多少条记录怎么办?
谢谢,

C#:
"Account": [
        {
            "cableunit_name": "",
            "cableunit_number": "",
            "potential_installation": "",
            "municipality": "",
            "postcode": "",
            "customer_segment": "",
            "Housing_type": "",
            "building_type": "",
            "housing_ownership": ""
        },
        {
            "cableunit_name": "",
            "cableunit_number": "",
            "potential_installation": "",
            "municipality": "",
            "postcode": "",
            "customer_segment": "",
            "Housing_type": "",
            "building_type": "",
            "housing_ownership": ""
        },
 

Aussieboy.

众所周知的成员
加入
9月7日,2020年
消息
53
编程经验
Beginner
我有一些如下。
那么我如何进入某种 ?
谢谢,

C#:
public class Record
        {
        public string test1 { get; set; }
        public string test2 { get; set; }
        }
 

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,893
地点
切萨皮克,va.
编程经验
10+
否...您希望在不知道将获得多少条记录时将字段显示为数组或列表。

我现在没有JSON.NET文档友好,但我很确定文档中有一个部分有关这个问题。
 
最后编辑了主持人:

Aussieboy.

众所周知的成员
加入
9月7日,2020年
消息
53
编程经验
Beginner
嗨,我必须承认我现在很困惑。我读到最糟糕的文章越多。
我有类似下面的东西。我已经有一个根对象。新的根对象我正在尝试调用qrootobject,如上所述。

C#:
{
    "success": true,
    "payload": {
        "Data": {
            "record": [{
                    "field1": "",
                    "field2": "364",
                    "field3": "",
                }, {
                    "field1": "",
                    "field2": "364",
                    "field3": "",
                }, {
                etc

我也试过了

C#:
public class Data
        {
            //public Record record { get; set; }
            public List<Record> record { get; set; }
        }

QRootObject QRoot = JsonConvert.DeserializeObject<List<Record>>(response.Content);
 

约翰

C#论坛主持人
工作人员
加入
2011年4月23日
消息
1,159
地点
挪威
编程经验
10+
插入代码时,您可以选择语言类型:
1601361737351.png.
 

Aussieboy.

众所周知的成员
加入
9月7日,2020年
消息
53
编程经验
Beginner
嗨,我有类似的东西。但是,我确信它是不正确的。
有谁可以指出我的正确方向
谢谢,

C#:
       public class QPayLoad
        {
            public Data data { get; set; }
        }

        public class Data
        {
            //public Record record { get; set; }
            public IList<Record> record { get; set; }
        }

        public class QRootObject
        {
            public bool success { get; set; }
            //public string action { get; set; }
            public Header header { get; set; }
            public QPayLoad qpayload { get; set; }
        }

        public class Record
        {
        public string field1 { get; set; }
        public string field2 { get; set; }
        }
 

Aussieboy.

众所周知的成员
加入
9月7日,2020年
消息
53
编程经验
Beginner
嗨,使用 以任何语言立即解析JSON | QuickType.
给我以下;

正在尝试使用qrotobject不是可能性?
我注意到了线条 - 公共唱片[]记录{GET;放; }
谢谢,

C#:
namespace QuickType
{
    using System;
    using System.Collections.Generic;

    using System.Globalization;
    using Newtonsoft.Json;
    using Newtonsoft.Json.Converters;

    public partial class J
    {
        [JsonProperty("success")]
        public bool Success { get; set; }

        [JsonProperty("payload")]
        public Payload Payload { get; set; }
    }

    public partial class Payload
    {
        [JsonProperty("Data")]
        public Data Data { get; set; }
    }

    public partial class Data
    {
        [JsonProperty("record")]
        public Record[] Record { get; set; }
    }

    public partial class Record
    {
        [JsonProperty("field1")]
        public string Field1 { get; set; }

        [JsonProperty("field2")]
        [JsonConverter(typeof(ParseStringConverter))]
        public long Field2 { get; set; }

        [JsonProperty("field3")]
        public string Field3 { get; set; }
    }
}
 

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,893
地点
切萨皮克,va.
编程经验
10+
我可以使用以下代码获取根对象:
C#:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;

namespace SimpleCS
{
    class Root
    {
        public bool success { get; set; }
        public Payload Payload { get; set; }
    }

    class Payload
    {
        public Data Data { get; set; }
    }

    class Data
    {
        public List<Record> Record { get; set; }
    }

    class Record
    {
        public string field1 { get; set; }
        public string field2 { get; set; }
        public string field3 { get; set; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            var jsonText = File.ReadAllText("response.json");

            var root = JsonConvert.DeserializeObject<Root>(jsonText);
        }
    }
}

我用它作为我的数据:
response.json:
{
  "success": true,
  "payload": {
    "Data": {
      "record": [
        {
          "field1": "",
          "field2": "364",
          "field3": ""
        },
        {
          "field1": "",
          "field2": "364",
          "field3": ""
        }
      ]
    }
  }
}

也许我不明白这个问题。
 

sh

众所周知的成员
加入
2018年9月5日
消息
1,982
编程经验
10+
jsonconvert.populateObject(JSON,帐户);

在地球上是如此困难,对json文本传递给json和帐户部分的地方,你只需替换它并将你想要填充的参考的类名?
 

sh

众所周知的成员
加入
2018年9月5日
消息
1,982
编程经验
10+
抛弃您拥有的课程并重写逻辑。我没有看到为什么你不能使用一个类并填充与您尝试读取的JSON文件内容匹配的字段。
如果您仔细查看您的代码,您也可以看到如何将列表添加到该类中 @skydiver. 以前建议在P1 /#9上。对于每个记录添加到您的记录类,您可以有一个列表<T>其中T是记录的类对象...因此为您提供所有记录的列表。
 
最佳 底部