前端传送对象集合到后端 如何遍历?

wanfeng 2019-04-27 09:26:48


{"param":{"0":{"title":"Φ813(711-813)","param":"32","name":"管径"},"1":{"title":" δ22mm(18mm-22mm)","param":"1.8","name":"壁厚"}}}




前段传送这个



怎么在WebMethod 方法下接收 并遍历数组



[WebMethod]
public static string getSelectMultiple(object param)
{


}

...全文
2494 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
吾友客 2019-04-30
  • 打赏
  • 举报
回复
1、首先确定前台数据的json结构 2、在后台新建一个模型A对应前端的json接口 3、反序列化前端的json给模型A
大鱼> 2019-04-28
  • 打赏
  • 举报
回复
首先看数据格式,这是一个明显的Json字符串,你需要先进行序列号,转成实体类集合,再对实体类集合进行遍历,集合遍历总会吧
  • 打赏
  • 举报
回复
先弄清数据结构,再建个实体类来反序列吧,借助实体生成工具,public class 0 { /// <summary> /// /// </summary> public string title { get; set; } /// <summary> /// /// </summary> public string param { get; set; } /// <summary> /// 管径 /// </summary> public string name { get; set; } } public class 1 { /// <summary> /// /// </summary> public string title { get; set; } /// <summary> /// /// </summary> public string param { get; set; } /// <summary> /// 壁厚 /// </summary> public string name { get; set; } } public class Param { /// <summary> /// /// </summary> public 0 0 { get; set; } /// <summary> /// /// </summary> public 1 1 { get; set; } } public class Root { /// <summary> /// /// </summary> public Param param { get; set; } }
正怒月神 版主 2019-04-28
  • 打赏
  • 举报
回复
https://blog.csdn.net/hanjun0612/article/details/51918059
  • 打赏
  • 举报
回复
例如你可能可以写 public static string getSelectMultiple(MyDataType param) 或者 public static string getSelectMultiple(ExpandoObject param) 或者 public static string getSelectMultiple(JObject param) 或者 public static string getSelectMultiple(dynamic param) //实际也是 ExpandoObject,所以 dynamic 有点容易自欺欺人 都是一样的基本概念,你要搞懂“如何遍历”都要先搞懂自己需要什么数据结构。
  • 打赏
  • 举报
回复
如果不自定义类型,那么工具起码也给你返回 JObject 类型之类的东西。那么你学过 JObject 的详细的数据结构知识吗?或者为什么你不自己定义一个你需要反序列化的具体的数据类型呢? 说到底,首先要学到的编程设计理念就是,不要滥用 object 这么词儿。想不说明具体类型就产生了可执行可操作可测试通过的程序了,不可能的,最终会被 object 概念所欺骗。只学编程语句而不学编程“设计理念”会很快被不骗人的运行程序而打脸。
  • 打赏
  • 举报
回复
引用 楼主 wanfeng 的回复:
怎么在WebMethod 方法下接收 并遍历数组


  [WebMethod]
    public static string getSelectMultiple(object param)
    {


    }

不要滥用 object 这个词儿。所谓“万能的”空洞的 object,对于你来说是什么都不懂都不明白,那么你怎么可能在编程时就明确地在语法、语义上去说明程序的含义呢? 所以教你滥用 object 的老师或者骄傲成是很扯的忽悠人的,看上去好像是“一切皆对象”但是根本没有教会你说明“到底是哪一类对象?”的技术。编程中对于这种声明,你首先要用最具体的类型来定义 param 变量的类型。 真正懂得抽象的人,也最懂得具体。凡是抽象、面向对象都是从具体而来的。
wanfeng 2019-04-28
  • 打赏
  • 举报
回复
引用 7 楼 以专业开发人员为伍 的回复:
[quote=引用 楼主 wanfeng 的回复:] 怎么在WebMethod 方法下接收 并遍历数组


  [WebMethod]
    public static string getSelectMultiple(object param)
    {


    }

不要滥用 object 这个词儿。所谓“万能的”空洞的 object,对于你来说是什么都不懂都不明白,那么你怎么可能在编程时就明确地在语法、语义上去说明程序的含义呢? 所以教你滥用 object 的老师或者骄傲成是很扯的忽悠人的,看上去好像是“一切皆对象”但是根本没有教会你说明“到底是哪一类对象?”的技术。编程中对于这种声明,你首先要用最具体的类型来定义 param 变量的类型。 真正懂得抽象的人,也最懂得具体。凡是抽象、面向对象都是从具体而来的。[/quote] 谢谢您的批评
wanfeng 2019-04-27
  • 打赏
  • 举报
回复
引用 4 楼 张天星 的回复:
[quote=引用 2 楼 wanfeng 的回复:] [quote=引用 1 楼 张天星 的回复:]

 var data = this.HttpContext.Request;
            var sr = new StreamReader(data.InputStream);
            var jsonString = sr.ReadToEnd();
            JObject jsonObject = JObject.Parse(jsonString);
这个是接收前端Post上来的数据的。 至于JObject怎么转成Model,你可用这个: https://blog.csdn.net/qq_17523135/article/details/86809757
我放进去不行呢[/quote] 提示什么[/quote]



    /// </summary>
    /// <returns> </returns>
    [WebMethod]
    public static string getSelectMultiple(object param)
    {




        string result = JsonConvert.SerializeObject(param);
        JObject jsonObject = JObject.Parse(result);

        //var str1 = jsonObject.Property("1").ToList();
    
        StringBuilder str = new StringBuilder();
        foreach (var item in jsonObject)
        {
            str.Append(item.Key + ":" + item.Value + ",");
        }

报这个错...

d: "{"m_MaxCapacity":2147483647,"Capacity":580,"m_StringValue":"0:{\r\n  \"title\": \"Φ813(711-813)\",\r\n  \"param\": \"32\",\r\n  \"name\": \"管径\"\r\n},1:{\r\n  \"title\": \" δ34mm(30mm-34mm)\",\r\n  \"param\": \"2.7\",\r\n  \"name\": \"壁厚\"\r\n},2:{\r\n  \"title\": \"20G、16Mn、X65\",\r\n  \"param\": \"1.1\",\r\n  \"name\": \"材质\"\r\n},3:{\r\n  \"title\": \"丘陵地貌\",\r\n  \"param\": \"1.2\",\r\n  \"name\": \"作业环境\"\r\n},4:{\r\n  \"title\": \"非全自动焊\",\r\n  \"param\": \"1\",\r\n  \"name\": \"作业方式\"\r\n},","m_currentThread":0}"

wanfeng 2019-04-27
  • 打赏
  • 举报
回复


    [WebMethod]
    public static string getSelectMultiple(object param)
    {


        //var data = this.HttpContext.Request;

        //HttpContext context = HttpContext.Current;
        //var sr = new StreamReader(data.InputStream);
        //var jsonString = sr.ReadToEnd();


        string result = JsonConvert.SerializeObject(param);
        JObject jsonObject = JObject.Parse(result);

        var str1 = jsonObject.Property("1").ToList();
        StringBuilder str = new StringBuilder();
        IEnumerable<JProperty> properties = jsonObject.Properties();
        foreach (JProperty item in properties)
        {
            //Console.WriteLine(item.Name + ":" + item.Value);
            str.Append(item.Value.ToString());
        }    [WebMethod]
    public static string getSelectMultiple(object param)
    {


        //var data = this.HttpContext.Request;

        //HttpContext context = HttpContext.Current;
        //var sr = new StreamReader(data.InputStream);
        //var jsonString = sr.ReadToEnd();


        string result = JsonConvert.SerializeObject(param);
        JObject jsonObject = JObject.Parse(result);

        var str1 = jsonObject.Property("1").ToList();
        StringBuilder str = new StringBuilder();
        IEnumerable<JProperty> properties = jsonObject.Properties();
        foreach (JProperty item in properties)
        {
            //Console.WriteLine(item.Name + ":" + item.Value);
            str.Append(item.Value.ToString());
        }

我这么弄的...
张天星 2019-04-27
  • 打赏
  • 举报
回复
引用 2 楼 wanfeng 的回复:
[quote=引用 1 楼 张天星 的回复:]

 var data = this.HttpContext.Request;
            var sr = new StreamReader(data.InputStream);
            var jsonString = sr.ReadToEnd();
            JObject jsonObject = JObject.Parse(jsonString);
这个是接收前端Post上来的数据的。 至于JObject怎么转成Model,你可用这个: https://blog.csdn.net/qq_17523135/article/details/86809757
我放进去不行呢[/quote] 提示什么
秋的红果实 2019-04-27
  • 打赏
  • 举报
回复
你前端传递的是json串,使用newtonsoft解析
wanfeng 2019-04-27
  • 打赏
  • 举报
回复
引用 1 楼 张天星 的回复:

 var data = this.HttpContext.Request;
            var sr = new StreamReader(data.InputStream);
            var jsonString = sr.ReadToEnd();
            JObject jsonObject = JObject.Parse(jsonString);
这个是接收前端Post上来的数据的。 至于JObject怎么转成Model,你可用这个: https://blog.csdn.net/qq_17523135/article/details/86809757
我放进去不行呢
张天星 2019-04-27
  • 打赏
  • 举报
回复

 var data = this.HttpContext.Request;
            var sr = new StreamReader(data.InputStream);
            var jsonString = sr.ReadToEnd();
            JObject jsonObject = JObject.Parse(jsonString);
这个是接收前端Post上来的数据的。 至于JObject怎么转成Model,你可用这个: https://blog.csdn.net/qq_17523135/article/details/86809757

62,074

社区成员

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

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

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

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