接收一大堆json,解析再送出

-一个大坑 2018-10-26 10:44:17
怎么处理比较简单?
下面是访问api获取的json,我要用到FVehicleName,FGPSDateTime,FLongitude,FLatitude,FSpeed这几个栏位
然后上传到百度地图生成轨迹

{
"Result": 200,
"Message": "success",
"FObject": [ {
"FVehicleGUID": "0dafcb46-1a3e-45bc-be4b-00b9eecf8966",
"FVehicleName": "4794",
"FAssetGUID": "ec1e03ab-95be-439a-b607-e4e01f663f39",
"FAssetID": "7580704794",
"FAssetTypeID": 701,
"FLongitude": 113.455163,
"FLatitude": 22.56671,
"FSpeed": 2,
"FDirection": 0,
"FMileage": 107,
"FGPSDateTime": "2018-10-17T07:30:30",
"FRecvDateTime": "2018-10-17T07:30:24",
"FWorkStatus": false,
"FRefrigeratorWork": false,
"FLockStatus": true,
"FBatteryPercent": 50,
"FSolarCharge": false,
"FLockRope": false,
"FVibration": false,
"FLocationType": 1,
"FAttitude": null,
"RowNo": 10
}, {
"FVehicleGUID": "0dafcb46-1a3e-45bc-be4b-00b9eecf8966",
"FVehicleName": "4794",
"FAssetGUID": "ec1e03ab-95be-439a-b607-e4e01f663f39",
"FAssetID": "7580704794",
"FAssetTypeID": 701,
"FLongitude": 113.455462,
"FLatitude": 22.566773,
"FSpeed": 2,
"FDirection": 0,
"FMileage": 107,
"FGPSDateTime": "2018-10-17T08:33:54",
"FRecvDateTime": "2018-10-17T08:33:47",
"FWorkStatus": false,
"FRefrigeratorWork": false,
"FLockStatus": true,
"FBatteryPercent": 50,
"FSolarCharge": false,
"FLockRope": false,
"FVibration": false,
"FLocationType": 1,
"FAttitude": null,
"RowNo": 11
}, {
"FVehicleGUID": "0dafcb46-1a3e-45bc-be4b-00b9eecf8966",
"FVehicleName": "4794",
"FAssetGUID": "ec1e03ab-95be-439a-b607-e4e01f663f39",
"FAssetID": "7580704794",
"FAssetTypeID": 701,
"FLongitude": 113.455897,
"FLatitude": 22.566173,
"FSpeed": 2,
"FDirection": 0,
"FMileage": 107,
"FGPSDateTime": "2018-10-17T09:07:53",
"FRecvDateTime": "2018-10-17T09:07:46",
"FWorkStatus": false,
"FRefrigeratorWork": false,
"FLockStatus": true,
"FBatteryPercent": 50,
"FSolarCharge": false,
"FLockRope": false,
"FVibration": false,
"FLocationType": 1,
"FAttitude": null,
"RowNo": 12
}, {
"FVehicleGUID": "0dafcb46-1a3e-45bc-be4b-00b9eecf8966",
"FVehicleName": "4794",
"FAssetGUID": "ec1e03ab-95be-439a-b607-e4e01f663f39",
"FAssetID": "7580704794",
"FAssetTypeID": 701,
"FLongitude": 113.455087,
"FLatitude": 22.566985,
"FSpeed": 11,
"FDirection": 336,
"FMileage": 107,
"FGPSDateTime": "2018-10-17T10:23:01",
"FRecvDateTime": "2018-10-17T10:22:53",
"FWorkStatus": false,
"FRefrigeratorWork": false,
"FLockStatus": true,
"FBatteryPercent": 50,
"FSolarCharge": false,
"FLockRope": false,
"FVibration": false,
"FLocationType": 1,
"FAttitude": null,
"RowNo": 13
}, {
"FVehicleGUID": "0dafcb46-1a3e-45bc-be4b-00b9eecf8966",
"FVehicleName": "4794",
"FAssetGUID": "ec1e03ab-95be-439a-b607-e4e01f663f39",
"FAssetID": "7580704794",
"FAssetTypeID": 701,
"FLongitude": 113.455433,
"FLatitude": 22.566493,
"FSpeed": 2,
"FDirection": 0,
"FMileage": 107,
"FGPSDateTime": "2018-10-17T11:58:31",
"FRecvDateTime": "2018-10-17T11:58:22",
"FWorkStatus": false,
"FRefrigeratorWork": false,
"FLockStatus": true,
"FBatteryPercent": 50,
"FSolarCharge": false,
"FLockRope": false,
"FVibration": false,
"FLocationType": 1,
"FAttitude": null,
"RowNo": 14
}, {
"FVehicleGUID": "0dafcb46-1a3e-45bc-be4b-00b9eecf8966",
"FVehicleName": "4794",
"FAssetGUID": "ec1e03ab-95be-439a-b607-e4e01f663f39",
"FAssetID": "7580704794",
"FAssetTypeID": 701,
"FLongitude": 113.455287,
"FLatitude": 22.566868,
"FSpeed": 2,
"FDirection": 0,
"FMileage": 108,
"FGPSDateTime": "2018-10-17T23:06:29",
"FRecvDateTime": "2018-10-17T23:06:30",
"FWorkStatus": false,
"FRefrigeratorWork": false,
"FLockStatus": true,
"FBatteryPercent": 50,
"FSolarCharge": false,
"FLockRope": false,
"FVibration": false,
"FLocationType": 1,
"FAttitude": null,
"RowNo": 16
}]
}


{
"ak": "ak",
"service_id": "id",
"point_list": [{
"entity_name": "FVehicleName",
"loc_time": FGPSDateTime,
"latitude": FLatitude,
"longitude": FLongitude,
"coord_type_input": "wgs84",
"speed": FSpeed
},
{
"entity_name": FVehicleName,
"loc_time": FGPSDateTime,
"latitude": FLatitude,
"longitude": FLongitude,
"coord_type_input": "wgs84",
"speed": FSpeed
}
]
}
...全文
639 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_34808927 2018-11-17
  • 打赏
  • 举报
回复
复杂格式json你赢面向对象丝路去解析
  • 打赏
  • 举报
回复
”上传到百度地图生成轨迹“这个格式问题,你需要从基本的目标出发,你需要贴出和解释清楚文档。否则纠结一大堆技术概念,但是根本不去读人家文档中的格式规则,那么其实技术根本毫无意义。
  • 打赏
  • 举报
回复
谁知道 csdn 自动插入的这个叫做”CSDN推荐“的垃圾回帖怎么屏蔽掉?
  • 打赏
  • 举报
回复
每一个功能接口支持什么命令解析协议,这应该看人家的文档。你没有看文档怎么知道人家要求什么上传格式呢?
stevenjin 2018-10-28
  • 打赏
  • 举报
回复
bejson在线工具,可以生实体类
-一个大坑 2018-10-26
  • 打赏
  • 举报
回复
引用 1 楼 ducker3590 的回复:

Root root = JsonConvert.DeserializeObject<Root>(”你的json字符串“);

Result result = new Result();
result.ak = "ak";
result.service_id = "id";
result.point_list = new List<Point_listItem>();
foreach (var item in root.FObject)
{
Point_listItem p = new Point_listItem();
p.entity_name = item.FVehicleName;
p.loc_time = item.FGPSDateTime;
p.latitude = item.FLatitude;
p.longitude = item.FLongitude;
p.coord_type_input = "wgs84";
p.speed = item.FSpeed;
result.point_list.Add(p);
}

string r = JsonConvert.SerializeObject(result);



我差不多也是这样写的,但是我这样上传,识别不了json,用&这种才能识别

public static string HttpPost(string url, string body)
{
try
{
Encoding encoding = Encoding.UTF8;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.Accept = "text/html, application/xhtml+xml, */*";
request.ContentType = "application/json";

byte[] buffer = encoding.GetBytes(body);
request.ContentLength = buffer.Length;
request.GetRequestStream().Write(buffer, 0, buffer.Length);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
return reader.ReadToEnd();
}
}
catch (Exception ex)
{
return ("NO");
}
}
stherix 2018-10-26
  • 打赏
  • 举报
回复
vs有个功能,你把这段json复制到剪贴板 然后再vs里(2015或2017) 编辑 - 选择性粘贴 - 将json粘贴为类 然后它会自动生成对应的实体类 然后你用nuget引用newtonsoft.json,可以轻松反序列化成对象了
csdnFUCKINGSUCKS 2018-10-26
  • 打赏
  • 举报
回复

Root root = JsonConvert.DeserializeObject<Root>(”你的json字符串“);

Result result = new Result();
result.ak = "ak";
result.service_id = "id";
result.point_list = new List<Point_listItem>();
foreach (var item in root.FObject)
{
    Point_listItem p = new Point_listItem();
    p.entity_name = item.FVehicleName;
    p.loc_time = item.FGPSDateTime;
    p.latitude = item.FLatitude;
    p.longitude = item.FLongitude;
    p.coord_type_input = "wgs84";
    p.speed = item.FSpeed;
    result.point_list.Add(p);
}

string r = JsonConvert.SerializeObject(result);

public class FObjectItem
{
    /// <summary>
    /// 
    /// </summary>
    public string FVehicleGUID { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public string FVehicleName { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public string FAssetGUID { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public string FAssetID { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public int FAssetTypeID { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public double FLongitude { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public double FLatitude { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public int FSpeed { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public int FDirection { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public int FMileage { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public string FGPSDateTime { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public string FRecvDateTime { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public string FWorkStatus { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public string FRefrigeratorWork { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public string FLockStatus { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public int FBatteryPercent { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public string FSolarCharge { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public string FLockRope { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public string FVibration { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public int FLocationType { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public string FAttitude { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public int RowNo { get; set; }
}

public class Root
{
    /// <summary>
    /// 
    /// </summary>
    public int Result { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public string Message { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public List<FObjectItem> FObject { get; set; }
}

public class Point_listItem
{
    /// <summary>
    /// 
    /// </summary>
    public string entity_name { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public string loc_time { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public double latitude { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public double longitude { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public string coord_type_input { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public int speed { get; set; }
}

public class Result
{
    /// <summary>
    /// 
    /// </summary>
    public string ak { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public string service_id { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public List<Point_listItem> point_list { get; set; }
}
csdnFUCKINGSUCKS 2018-10-26
  • 打赏
  • 举报
回复
引用 7 楼 happy4944 的回复:
[quote=引用 4 楼 ducker3590 的回复:] 去掉request.Accept
还是提示参数不存在[/quote] 你直接构造一个json,不从程序里生成看能不能提交成功。如果可以的话说明生产的json有问题,那就检查一下json格式和值是不是不符合要求。如果也不行的话那可能是接口那边接收的问题。
-一个大坑 2018-10-26
  • 打赏
  • 举报
回复
引用 4 楼 ducker3590 的回复:
去掉request.Accept

还是提示参数不存在
weixin_43524811 2018-10-26
  • 打赏
  • 举报
回复
谢谢的分享!
XBodhi. 2018-10-26
  • 打赏
  • 举报
回复

你可以这样,用动态类型

FVehicleName,FGPSDateTime,FLongitude,FLatitude,FSpeed

//例如
dynamic dModel = dynamic alarmObj = JsonConvert.DeserializeObject<dynamic>(你的json字符串);

dModel.FVehicleName
dModel.FGPSDateTime
dModel.FLongitude
dModel.FLatitude
dModel.FSpeed

其他的你直接写 按照面向对象的方式就可以了。简单,又简洁,只要两方规范好名字就而已。对大小写敏感。

csdnFUCKINGSUCKS 2018-10-26
  • 打赏
  • 举报
回复
去掉request.Accept

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧