【问题标题】:Send a post request in JSON format发送 JSON 格式的 post 请求
【发布时间】:2018-08-06 09:32:36
【问题描述】:

以下是 JSON 中预期的 post 请求格式。谁能告诉我如何实现这一目标。

{
  "MywebServiceInputDetail":{
     "MyDatalst":{
       "MyData":[
          {
           "name":"TestName",
           "id":"2611201",
           "SomeRefVal":"REF123456"
           }
          ]
        }
      }
}

我现在正在使用 JavaScriptSerializer。 下面是代码。

[Serializable]
public struct MyStruct
{
     public string name;
     public string id;
     public string refno;
}


JavaScriptSerializer jss = new JavaScriptSerializer();
string serializedJson = jss.Serialize(ObjMystrcut);

以上代码生成的 JSON 字符串为

{"name":"TestName","id":"1234567","refno":"567123"}

我是 JSON 新手,所以我无法制定请求格式。 我避免通过硬编码一个 json 字符串来实现它。基本上,我试图理解 {[ 括号的含义。

[ 是否意味着我需要创建一个对象数组?

【问题讨论】:

  • 你只定义了你最里面的类型。您还需要定义包含 List<MyStruct> MyDataMyDataListMywebSercieInputDetail 属性的包装器。然后你必须序列化最外层的对象
  • [ ] 告诉您正在使用对象集合,在本例中为 MyData 对象。如果父母只包含一个孩子,那么我们使用{ }

标签: c# json serialization json.net


【解决方案1】:

你可以这样做:

string serializedJson = jss.Serialize(new { MywebServiceInputDetail = new { MyDatalst = new { MyData = new[] { ObjMystrcut } } } });

{} 是对象表示法,因此它表示一个具有属性的对象。 [] 是一个数组表示法。

【讨论】:

    【解决方案2】:

    是的,[] 符号代表 JSON 数组(对象集合)。在您的示例中,MyData 是您创建的那些结构的集合。

    您需要创建以下类:

    public class MywebServiceInputDetail
    {
        public MyDatalst MyDatalst { get; set; }
    }
    
    public class MyDatalst
    {
        public List<MyStruct> MyData { get; set; }
    }
    
    public struct MyStruct
    {
        public string name;
        public string id;
        public string SomeRefVal;
    }
    

    现在创建一个 MywebServiceInputDetail 对象并对其进行序列化。

    我个人会忘记使用结构,而是创建以下类:

    public class MyClass
    {
        public string Name { get; set; }
        public string Id { get; set; }
        public string SomeRefVal { get; set; }
    }
    

    您还应该将 JSON 属性添加到属性中,以确保 Name 和 Id 使用小写字母进行序列化。

    【讨论】:

      猜你喜欢
      • 2012-04-02
      • 2022-02-21
      • 2014-04-10
      • 2017-11-16
      • 1970-01-01
      • 2012-11-03
      • 1970-01-01
      • 1970-01-01
      • 2012-12-04
      相关资源
      最近更新 更多