복잡한 JSON 역 직렬화

user3123001

다음 JSON 문자열을 역 직렬화하려고합니다.

JSON 문자열에 연결

{
  "result": 1,
  "error": null,
  "id": 0,
  "data": {
    "ASTEALTHYNODE01_0301_0_30": {
        "css_class": "sensor rf digital humidity",
        "default_name": "Humidity",
        "device_type": "humidity",
        "did": "30",
        "gid": "0301",
        "has_subdevice_count": 0,
        "has_time_series": 1,
        "is_actuator": 0,
        "is_sensor": 1,
        "is_silent": 0,
        "last_data": {
            "DA": 58,
            "timestamp": 1355791804474
        },
        "meta": {},
        "node": "ASTEALTHYNODE01",
        "shortName": "Humidity",
        "subDevices": {},
        "vid": "0"
    },
    "ASTEALTHYNODE01_0301_0_31": {
        "css_class": "sensor rf digital temperature",
        "default_name": "Temperature",
        "device_type": "temperature",
        "did": "31",
        "gid": "0301",
        "has_subdevice_count": 0,
        "has_time_series": 1,
        "is_actuator": 0,
        "is_sensor": 1,
        "is_silent": 0,
        "last_data": {
            "DA": 26.6,
            "timestamp": 1355791804475
        },
        "meta": {},
        "node": "ASTEALTHYNODE01",
        "shortName": "Temperature",
        "subDevices": {},
        "vid": "0"
    },
    "ASTEALTHYNODE01_0_0_1000": {
        "css_class": "actuator cape led rgbled",
        "default_name": "On Board RGB LED",
        "device_type": "rgbled",
        "did": "1000",
        "gid": "0",
        "has_subdevice_count": 0,
        "has_time_series": 0,
        "is_actuator": 1,
        "is_sensor": 1,
        "is_silent": 0,
        "last_data": {
            "DA": "22B42B",
            "timestamp": 1355790209080
        },
        "meta": {},
        "node": "ASTEALTHYNODE01",
        "shortName": "On Board RGB LED",
        "subDevices": {},
        "vid": "0"
    },
    "ASTEALTHYNODE01_0_0_11": {
        "css_class": "sensor serial rf rf433 receiver transmitter",
        "default_name": "RF 433Mhz",
        "device_type": "rf433",
        "did": "11",
        "gid": "0",
        "has_subdevice_count": 1,
        "has_time_series": 0,
        "is_actuator": 1,
        "is_sensor": 1,
        "is_silent": 0,
        "last_data": {
            "DA": "010001010101010100010101",
            "timestamp": 1355789891324
        },
        "meta": {},
        "node": "ASTEALTHYNODE01",
        "shortName": "RF 433Mhz",
        "subDevices": {
            "6l8At": {
                "category": "rf",
                "data": "011111110001010100110000",
                "shortName": "Door Bell",
                "type": "sensor"
            }
        },
        "vid": "0"
    }
  }
}

일반적으로 http://json2csharp.com의 도움으로 클래스를 만들고 다음과 같은 작업을합니다 (Json.NET 라이브러리). Collapse | 코드 복사

var result = JsonConvert.DeserializeObject<MyObject>(jsonString);

그러나 JSON 문자열을 얻기 전에 장치 수와 이름 (예 : ASTEALTHYNODE01_0_0_11)을 알 수 없습니다. 이것을 어떻게 역 직렬화 할 수 있습니까?

감사합니다

YSharp

이것은 JSON과 JSON.NET을 사용하여 나를 위해 작동합니다.

        Payload payloadJsonNet = JsonConvert.DeserializeObject<Payload>(data);
        System.Diagnostics.Debug.Assert
        (
            payloadJsonNet.data.ContainsKey("ASTEALTHYNODE01_0_0_11") &&
            payloadJsonNet.data["ASTEALTHYNODE01_0_0_11"].subDevices.ContainsKey("6l8At") &&
            payloadJsonNet.data["ASTEALTHYNODE01_0_0_11"].subDevices["6l8At"].shortName == "Door Bell"
        );

... 다음 POCO 를 준비한 경우 ( 예 : 멋진 json2csharp 도우미 사용 ) :

    public class Payload
    {
        public int result { get; set; }
        public int id { get; set; }
        public Error error { get; set; }
        public Dictionary<string, Device> data { get; set; }
    }

    public class Device
    {
        public string css_class { get; set; }
        public string default_name { get; set; }
        public string device_type { get; set; }
        public string did { get; set; }
        public string gid { get; set; }
        public int has_subdevice_count { get; set; }
        public int has_time_series { get; set; }
        public int is_actuator { get; set; }
        public int is_sensor { get; set; }
        public int is_silent { get; set; }
        public LastData last_data { get; set; }
        public Meta meta { get; set; }
        public string node { get; set; }
        public string shortName { get; set; }
        public Dictionary<string, Device> subDevices { get; set; }
        public string vid { get; set; }
    }

    public class LastData
    {
        public string DA { get; set; }
        public long timestamp { get; set; }
    }

    public class Meta
    {
    }

    public class Error
    {
    }

다른 JSON 입력에서이 마지막 두 사람의 속성 (예 : "Meta"및 "Error")이 무엇인지 알아 내거나 추론해야합니다.

또한 다음에서 사용해야하는 "long"유형에 유의하십시오.

    public class LastData
    {
        public string DA { get; set; }
        public long timestamp { get; set; }
    }

마지막으로, 호기심을 위해 내 자신의 파서 도 잘 deserialize합니다.

        Payload payloadMyParser = new JsonParser().Parse<Payload>(data);
        System.Diagnostics.Debug.Assert
        (
            payloadMyParser.data.ContainsKey("ASTEALTHYNODE01_0_0_11") &&
            payloadMyParser.data["ASTEALTHYNODE01_0_0_11"].subDevices.ContainsKey("6l8At") &&
            payloadMyParser.data["ASTEALTHYNODE01_0_0_11"].subDevices["6l8At"].shortName == "Door Bell"
        );

'도움이 되었기를 바랍니다,

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

복잡한 Json 객체 역 직렬화

분류에서Dev

복잡한 JSON 개체 역 직렬화

분류에서Dev

복잡한 JSON 개체 역 직렬화 C #

분류에서Dev

C #, Twitch Pubsub에서 복잡한 JSON 역 직렬화

분류에서Dev

복잡한 동적 JSON 문자열 역 직렬화

분류에서Dev

C #에서 복잡한 json 파일을 역 직렬화하려고합니다.

분류에서Dev

ReadAsAsync <T> ()를 사용하여 복잡한 Json 개체 역 직렬화

분류에서Dev

DynamicJsonArray가있는 복잡한 JSON 개체를 동적으로 역 직렬화

분류에서Dev

C # XMLNS 복잡한 역 직렬화

분류에서Dev

Json .Net은 플랫 객체를 복잡한 객체로 직렬화합니다 (직렬화 / 역 직렬화에 대한 객체 구조 변경).

분류에서Dev

Java 직렬화 / 역 직렬화에 대한 안전한 json

분류에서Dev

JSON 역 직렬화

분류에서Dev

이상한 JSON 역 직렬화

분류에서Dev

Spring JSON 역 직렬화 문자 제한

분류에서Dev

복잡한 json 데이터 bu Newton json을 어떻게 역 직렬화하고 직렬화 할 수 있습니까?

분류에서Dev

복잡한 유형을 단순 유형으로 직렬화 / 역 직렬화하는 Newtonsoft JSON 변환기를 구현하는 방법

분류에서Dev

복잡한 XML을 개체로 역 직렬화

분류에서Dev

XML 역 직렬화 : xmlString에서 복잡한 클래스로

분류에서Dev

Ember 데이터로 복잡한 모델 역 직렬화

분류에서Dev

Immutablejs : 복잡한 JS 객체를 역 직렬화하는 방법

분류에서Dev

Jackson을 사용한 사용자 지정 JSON 직렬화 / 역 직렬화

분류에서Dev

RestSharp로 JSON 역 직렬화

분류에서Dev

JSON C # 역 직렬화

분류에서Dev

JSON 개체 역 직렬화

분류에서Dev

Json .Net 역 직렬화

분류에서Dev

배열 JSON 역 직렬화

분류에서Dev

Json 파일 역 직렬화

분류에서Dev

JPA + JSON 역 직렬화

분류에서Dev

Json String .net 역 직렬화

Related 관련 기사

  1. 1

    복잡한 Json 객체 역 직렬화

  2. 2

    복잡한 JSON 개체 역 직렬화

  3. 3

    복잡한 JSON 개체 역 직렬화 C #

  4. 4

    C #, Twitch Pubsub에서 복잡한 JSON 역 직렬화

  5. 5

    복잡한 동적 JSON 문자열 역 직렬화

  6. 6

    C #에서 복잡한 json 파일을 역 직렬화하려고합니다.

  7. 7

    ReadAsAsync <T> ()를 사용하여 복잡한 Json 개체 역 직렬화

  8. 8

    DynamicJsonArray가있는 복잡한 JSON 개체를 동적으로 역 직렬화

  9. 9

    C # XMLNS 복잡한 역 직렬화

  10. 10

    Json .Net은 플랫 객체를 복잡한 객체로 직렬화합니다 (직렬화 / 역 직렬화에 대한 객체 구조 변경).

  11. 11

    Java 직렬화 / 역 직렬화에 대한 안전한 json

  12. 12

    JSON 역 직렬화

  13. 13

    이상한 JSON 역 직렬화

  14. 14

    Spring JSON 역 직렬화 문자 제한

  15. 15

    복잡한 json 데이터 bu Newton json을 어떻게 역 직렬화하고 직렬화 할 수 있습니까?

  16. 16

    복잡한 유형을 단순 유형으로 직렬화 / 역 직렬화하는 Newtonsoft JSON 변환기를 구현하는 방법

  17. 17

    복잡한 XML을 개체로 역 직렬화

  18. 18

    XML 역 직렬화 : xmlString에서 복잡한 클래스로

  19. 19

    Ember 데이터로 복잡한 모델 역 직렬화

  20. 20

    Immutablejs : 복잡한 JS 객체를 역 직렬화하는 방법

  21. 21

    Jackson을 사용한 사용자 지정 JSON 직렬화 / 역 직렬화

  22. 22

    RestSharp로 JSON 역 직렬화

  23. 23

    JSON C # 역 직렬화

  24. 24

    JSON 개체 역 직렬화

  25. 25

    Json .Net 역 직렬화

  26. 26

    배열 JSON 역 직렬화

  27. 27

    Json 파일 역 직렬화

  28. 28

    JPA + JSON 역 직렬화

  29. 29

    Json String .net 역 직렬화

뜨겁다태그

보관