我正在尝试使用RestSharp来反序列化JSON字符串。然而,我被#34; 555111222"周围的略微非标准结构所困扰。部分。
数字555111222是设备序列号,因此它可以更改,或者JSON响应中可以有多个序列号。
<?php
namespace frontend\models;
use common\models\User;
use yii\base\Model;
use Yii;
class PasswordResetRequestForm extends Model
{
public $email;
public function rules()
{
return [
// ['email', 'filter', 'filter' => 'trim'],
['email', 'required'],
['email', 'email'],
['email', 'exist',
'targetClass' => '\common\models\User',
'filter' => ['status' => User::STATUS_ACTIVE],
'message' => 'There is no user with such email.'
],
];
}
}
Json2csharp.com给了我以下
{
"requestid": "42",
"data": {
"555111222": {
"gps_data": [
{
"longitude": -73.952284,
"latitude": 40.755988,
"time": "2016-06-30 09:41:21"
},
{
"longitude": -73.952284,
"latitude": 40.755988,
"time": "2016-06-30 09:41:22"
},
{
"longitude": -73.952284,
"latitude": 40.755988,
"time": "2016-06-30 09:41:23"
}
]
}
}
}
我不确定如何处理班上的 invalid_type 错误。
谢谢
答案 0 :(得分:5)
我认为您的Data
属性应为Dictionary<string, GpsDataWrapper>
,其中GpsDataWrapper
只是一个具有GpsData
属性的类:
public class GpsData
{
public double longitude { get; set; }
public double latitude { get; set; }
public string time { get; set; }
}
public class GpsDataWrapper
{
public List<GpsData> gps_data { get; set; }
}
public class RootObject
{
public string requestid { get; set; }
public Dictionary<string, GpsDataWrapper> data { get; set; }
}
我个人然后将所有这些转换为使用.NET命名约定并应用属性来指定JSON中使用的名称。