Member 14779968 Ответов: 0

Как назначить одно и то же имя свойства json, одно из которых имеет значение, а другое-null?


В ответе json свойство "data" используется в виде списка, а в других местах в Json значение равно null.. Как включить оба сценария здесь, когда я десериализую и сериализую json.. без запуска в исключение элемент с именем "данные" уже существует. Используйте атрибут JsonPropertyAttribute для указания другого имени

//Вот Json-файл
{
    "adRoots": null,
    "allowedTagTypes": [
        0,
        1,
        4
    ],
    "canEdit": true,
    "filterConfigData": {
        "config": [{
                "extraData": null,
                "id": "Endpoints.ID.SearchInProgress",
                "title": "Search in Progress",
                "type": 5
            },
            {
                "data": null,
                "extraData": null,
                "id": "Endpoints.ID.Policies",
                "source": {
                    "definition": "dbo",
                    "displayColumn": "Name",
                    "keyColumn": "Id",
                    "name": "Policies",
                    "type": 1
                },
                "title": "Policies",
                "type": 3
            },
            {
                "extraData": null,
                "id": "Endpoints.ID.MACs",
                "title": "MAC Addresses",
                "type": 1
            },
            {
                "data": [{
                        "name": "Endpoint Closed",
                        "value": 11
                    },
                    {
                        "name": "Endpoint Completed",
                        "value": 15
                    },
                    {
                        "name": "Endpoint Opened",
                        "value": 10
                    }

                ],
                "extraData": null,
                "id": "Endpoints.ID.ClientActivityState",
                "source": {
                    "definition": "State",
                    "displayColumn": "Name",
                    "keyColumn": "Id",
                    "name": "ClientActivityState",
                    "type": 2
                },
                "title": "Client Activity State",
                "type": 3
            },
            {
                "data": [{
                        "name": "System Alarm",
                        "value": 3
                    },
                    {
                        "name": "System Audit",
                        "value": 2
                    }
                ],
                "extraData": null,
                "id": "Endpoints.ID.AceType",
                "source": {
                    "definition": "AceType",
                    "displayColumn": "Name",
                    "keyColumn": "Id",
                    "name": "AceType",
                    "type": 2
                },
                "title": "ACL: ACE Type",
                "type": 3
            },
            {
                "extraData": null,
                "id": "Endpoints.ID.AceWho",
                "title": "ACL: Trustee",
                "type": 1
            },
            {
                "data": [{
                        "name": "Append Data",
                        "value": 4
                    },
                    {
                        "name": "Delete",
                        "value": 65536
                    },
                    {
                        "name": "Execute",
                        "value": 32
                    }

                ],
                "extraData": null,
                "id": "Endpoints.ID.AceRights",
                "source": {
                    "definition": "AceRights",
                    "displayColumn": "Name",
                    "editor": "ViewModel",
                    "keyColumn": "Id",
                    "name": "AceRights",
                    "type": 2
                },
                "title": "ACL: Authorization",
                "type": 3
            },
            {
                "extraData": null,
                "id": "Endpoints.ID.FilterTagName",
                "title": "Tag Name",
                "type": 1
            },
            {
                "data": null,
                "extraData": null,
                "id": "Endpoints.ID.FilterTags",
                "source": {
                    "definition": "dbo",
                    "displayColumn": "Name",
                    "keyColumn": "Id",
                    "name": "Tags",
                    "type": 1
                },
                "title": "Tags",
                "type": 3
            },
            {
                "extraData": null,
                "id": "Endpoints.Name.EndpointName",
                "title": "Endpoint Name",
                "type": 1
            },
            {
                "data": null,
                "extraData": null,
                "id": "Endpoints.Version.Version",
                "title": "Endpoint Version",
                "type": 1
            },
            {
                "extraData": null,
                "id": "Endpoints.Platform.Platform",
                "title": "Endpoint Platform",
                "type": 1
            },
            {
                "data": [{
                        "name": "Desktop",
                        "value": 1
                    },
                    {
                        "name": "Server",
                        "value": 2
                    },
                    {
                        "name": "Unknown",
                        "value": 0
                    }
                ],
                "extraData": null,
                "id": "ELPlatformType",
                "source": {
                    "displayColumn": "Name",
                    "keyColumn": "Id",
                    "name": "PlatformType",
                    "type": 2
                },
                "title": "Platform Type",
                "type": 3
            },
            {
                "extraData": null,
                "id": "Endpoints.LastPoll.LastPoll",
                "title": "Last Poll Time",
                "type": 2
            }

        ],
        "pagedListItems": null
    },
    "forests": null,
    "item": {
        "disallowed": false,
        "editPermissions": 0,
        "endpointsCount": 0,
        "filter": null,
        "id": 404,
        "ldapPaths": null,
        "name": "tag",
        "query": null,
        "type": 0
    }
}


Что я уже пробовал:

[JsonProperty("data", NullValueHandling = NullValueHandling.Ignore)]
 public List<Datum> Data { get; set; }

[JsonProperty("data", NullValueHandling = NullValueHandling.Include)]
private List<Datum> Data2 { set { Data = value; } }

Richard MacCutchan

Вам нужно объявить некоторый метод, который обрабатывает объекты "данные" и проверяет наличие нулевых значений.

0 Ответов