JSON массив не заполняется - PullRequest
1 голос
/ 21 июля 2010

По какой-то причине следующая строка JSON создает правильное количество записей в массиве пользовательских объектов, но НЕ заполняет объекты в массиве значениями и. Помощь оценена!

JSON String

{ 
"Grids": [{ "CommitImporterGrid": {"CostDivisionCode": "DL", "CostDivisionKey": 5, "CostDivisionName": "Direct Labor", "SourceType": "Contractor", "CommitDollars": 202, "CommitHours": 113.12, "PercentComplete": 50.00, "TaxRate": 0, "IohRate": 0.01, "ConditionerRate": 0}}],
"ProjectKey": 571, 
"AsOf": "1/1/2008 11:59:59 PM", 
"WbsKey": 1327, 
"FcrGroupKey": 26, 
"ContractorKey": 11
}

Десериализатор

protected void btnSave_Click(object sender, EventArgs e)
{
    JavaScriptSerializer serializer = new JavaScriptSerializer();
    JsonViewer view = serializer.Deserialize<JsonViewer>(txtJson.Value);

    // The LIST in the "view" object HAS records, but NO DATA?
}

Пользовательские классы

public class JsonViewer
{
    public JsonViewer()
    { }

    public List<CommitImporterGrid> Grids { get; set; }

    public Int32 ProjectKey { get; set; }
    public String AsOf { get; set; }
    public Int32 WbsKey { get; set; }
    public Int32 FcrGroupKey { get; set; }
    public Int32 ContractorKey { get; set; } 
}



public class CommitImporterGrid
        {
            public CommitImporterGrid()
            { }

            public String CostDivisionCode { get; set; } 
            public Int32 CostDivisionKey { get; set; } 
            public String CostDivisionName { get; set; } 
            public String SourceType { get; set; } 
            public Decimal CommitDollars { get; set; } 
            public Decimal CommitHours { get; set; } 
            public Decimal PercentComplete { get; set; } 
            public Decimal TaxRate { get; set; } 
            public Decimal IohRate { get; set; } 
            public Decimal ConditionerRate { get; set; } 
        }

Ответы [ 2 ]

2 голосов
/ 21 июля 2010

Ваш массив JSON содержит объект с одним свойством с именем CommitImporterGrid.Это не отображается нигде в вашем коде.Я думаю, вам нужно потерять это { "CommitImporterGrid": из JSON вместе с соответствующей фигурной скобкой.

1 голос
/ 21 июля 2010

Старый: (Плохой)

{
    "Grids": [
        { 
            "CommitImporterGrid": 
            {
                "CostDivisionCode": "DL", 
                "CostDivisionKey": 5, 
                "CostDivisionName": "Direct Labor", 
                "SourceType": "Contractor", 
                "CommitDollars": 202, 
                "CommitHours": 113.12, 
                "PercentComplete": 50.00, 
                "TaxRate": 0, 
                "IohRate": 0.01, 
                "ConditionerRate": 0
            }
        }
    ],
    "ProjectKey": 571,
    "AsOf": "1/1/2008 11:59:59 PM",
    "WbsKey": 1327,
    "FcrGroupKey": 26,
    "ContractorKey": 11
}

Новый:

{
    "Grids": [
        { 
            "CostDivisionCode": "DL", 
            "CostDivisionKey": 5, 
            "CostDivisionName": "Direct Labor", 
            "SourceType": "Contractor", 
            "CommitDollars": 202, 
            "CommitHours": 113.12, 
            "PercentComplete": 50.00, 
            "TaxRate": 0, 
            "IohRate": 0.01, 
            "ConditionerRate": 0
        }
    ],
    "ProjectKey": 571,
    "AsOf": "1/1/2008 11:59:59 PM",
    "WbsKey": 1327,
    "FcrGroupKey": 26,
    "ContractorKey": 11
}

У человека выше меня есть объяснение, хотя я покажу вам правильный JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...