如何安全地反序列化密钥/数据格式 JSON 响应

HichemSeeSharp

我从第三方 Web 服务获得了这个“优化”的 JSON 响应,如下所示,我根据键中提供的信息构建了类型,但我面临的困难是数据不是在对象中表示,而是在数组中表示有没有办法自动化我的对象列表的构建和值映射?

{
    "reports": {
        "query": {
            "keys": [{
                "name": "Date",
                "type": "date"
            }, {
                "name": "NetSales",
                "type": "price"
            }, {
                "name": "GrossCash",
                "type": "price"
            }, {
                "name": "GrossCard",
                "type": "price"
            }, {
                "name": "GrossDelivery",
                "type": "price"
            }, {
                "name": "NetFood",
                "type": "price"
            }, {
                "name": "NetDrink",
                "type": "price"
            }, {
                "name": "NetRetail",
                "type": "price"
            }, {
                "name": "Baskets",
                "type": "int"
            }],
            "data": [
                [1523577600000, 51924, 11300, 27200, 9900, null, null, null, 8],
                [1523404800000, 7434, 2600, 3900, null, null, null, null, 6],
                [1523491200000, 18101, 4000, 10100, null, null, null, null, 5],
                [1523664000000, 13243, 7400, 6500, null, null, null, null, 3],
                [1523750400000, 11718, 7300, null, 5000, null, null, null, 2],
                [1523836800000, 16576, 7700, 4800, 4900, null, null, null, 4],
                [1524096000000, 20293, 9100, 6000, null, null, null, null, 4]
            ]
        }
    },
    "api": {
        "message": {
            "success": {
                "202": {
                    "id": 202,
                    "title": "Token is valid",
                    "details": "Token is validated and found valid."
                }
            }
        },
        "codeBaseVersion": 1,
        "executionTime_milliSeconds": 43
    }
}

我最终得到了这段代码,但并不满意:

JObject myOpject = JObject.Parse(responseString);

List<JToken> setOfObjects = myOpject["reports"]["query"]["data"].Children().ToList();
var listOfData = new List<Data2>();
foreach (var token in setOfObjects)
{
    var myObject = new Data2
    {
        NetSales = decimal.Parse(token[1].ToString()),
        //etc.

    };

    listOfData.Add(myObject);
}
恩科西

使用相同的 JToken 想法使用键转换数据以创建新的对象模型,然后将其反序列化为所需的强类型。

例如,获取一些记录,您可以将键和数据转换为

[
  {
    "Date": 1523577600000,
    "NetSales": 51924,
    ...
  },
  {
    "Date": 1523404800000,
    "NetSales": 7434,
    ...
  },
  ...
]

以下代码尝试使用与数据数组中项目的索引匹配的键索引来构建它

JObject myOpject = JObject.Parse(responseString);
List<JToken> keys = myOpject["reports"]["query"]["keys"].Children().ToList();
List<JToken> data = myOpject["reports"]["query"]["data"].Children().ToList();

var array = new JArray();
foreach (var token in data) {
    var record = new JObject();
    for (var i = 0; i < keys.Count; i++) {
        var propertyName = keys[i]["name"].Value<string>();
        var propertyValue = token[i];
        record[propertyName] = propertyValue;                    
    }
    array.Add(record);                
}

var listOfData = array.ToObject<List<Data2>>(); // or Data2[], etc

假设Data2是具有匹配属性的强类型模型。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

反序列化动态JSON响应

来自分类Dev

反序列化echonest JSON响应

来自分类Dev

无法反序列化JSON响应

来自分类Dev

如何使用@JsonProperty反序列化JSON响应?

来自分类Dev

使用RestSharp Client反序列化嵌套的JSON响应

来自分类Dev

C#反序列化JSON Web API响应

来自分类Dev

反序列化此JSON响应到C#

来自分类Dev

Azure JSON响应反序列化C#

来自分类Dev

JSON响应未在C#中反序列化?

来自分类Dev

反序列化对C#对象错误的JSON响应

来自分类Dev

仅反序列化JSON响应的单个节点

来自分类Dev

无法反序列化来自Flurry API的json响应

来自分类Dev

无法在 C# 中反序列化 JSON 响应

来自分类Dev

使用进度从 HttpWebRequest 响应流反序列化 JSON

来自分类Dev

问题反序列化条带 json 响应

来自分类Dev

如何在Rest api的HTTP方法请求和响应中应用Json序列化或反序列化

来自分类Dev

如何在Rest api的HTTP方法请求和响应中应用Json序列化或反序列化

来自分类Dev

RestSharp无法正确地自动反序列化我的JSON响应-但是JSON.NET可以-为什么?

来自分类Dev

RestSharp无法正确地自动反序列化我的JSON响应-但是JSON.NET可以-为什么?

来自分类Dev

响应正文JSON中的序列化日期格式

来自分类Dev

如何反序列化来自WCF Restful Service的Json响应?

来自分类Dev

如何反序列化来自WCF Restful Service的Json响应?

来自分类Dev

如何反序列化json对象并向arraylist添加响应

来自分类Dev

使用JSON.NET反序列化嵌套的JSON响应

来自分类Dev

从Wordpress API JSON响应中反序列化嵌套的JSON标签和附件

来自分类Dev

正确格式的JSON响应

来自分类Dev

JSON响应格式错误

来自分类Dev

格式 LocalDateTime 响应 json

来自分类Dev

json响应,读取数据

Related 相关文章

热门标签

归档