【问题标题】:How to Create multi level Json using Jobject in C#?如何在 C# 中使用 Jobject 创建多级 Json?
【发布时间】:2015-06-09 01:55:05
【问题描述】:

我想创建多级 Json,使用 http://json2csharp.com/. 我创建了类。但不知道怎么用。

public class MassPay
{
    public string legal_name { get; set; }
    public string account_number { get; set; }
    public string routing_number { get; set; }
    public string amount { get; set; }
    public string trans_type { get; set; }
    public string account_class { get; set; }
    public string account_type { get; set; }
    public string status_url { get; set; }
    public string supp_id { get; set; }
    public string user_info { get; set; }
}

public class MassPayList
{
    public string oauth_consumer_key { get; set; }
    public string bank_id { get; set; }
    public string facilitator_fee { get; set; }
    public IList<MassPay> mass_pays { get; set; }

}

这些是我的课程,这是我想要创建的 Json 格式...

还有额外的元素...

{
"oauth_consumer_key":"some_oauth_token", 
    "mass_pays":[
    {"legal_name":"SomePerson1",
    "account_number":"888888888",
    "routing_number":"222222222",
    "amount":"10.33",
    "trans_type":"0",
    "account_class":"1",
    "account_type":"2"
    },
    {"legal_name":"SomePerson2",
    "account_number":"888888888",
    "routing_number":"222222222",
    "amount":"10.33",
    "trans_type":"0",
    "account_class":"1",
    "account_type":"1"}
    ]
    }

到目前为止,我已经想出了下面的代码..我使用的是 JObject,而所有其他的都是单级的,所以这很容易。但是到了两三级就很难了。

public JObject AddMassPayRequest(MassPayList lMassPayList, MassPay lMassPay)
        {
            JObject pin = new JObject(
                new JProperty("legal_name", lMassPay.legal_name),
                new JProperty("account_number", lMassPay.account_number),
                new JProperty("routing_number", lMassPay.routing_number),
                new JProperty("amount", lMassPay.amount),
                new JProperty("trans_type", lMassPay.trans_type),
                new JProperty("account_class", lMassPay.account_class),
                new JProperty("account_type", lMassPay.account_type),
                new JProperty("status_url", lMassPay.status_url),
                new JProperty("supp_id", lMassPay.supp_id),
                new JProperty("status_url", lMassPay.status_url),
                new JProperty("user_info", lMassPay.user_info)
           );
            return pin;
        }
        public JObject AddMassPayRequestList(MassPayList lMassPayList, MassPay lMassPay)
        {
            JObject pin = new JObject(
                new JProperty("mass_pays", lMassPayList.mass_pays),
                new JProperty("bank_id", lMassPayList.bank_id),
                new JProperty("facilitator_fee", lMassPayList.facilitator_fee),
                new JProperty("oauth_consumer_key", lMassPayList.oauth_consumer_key)
          );
            return pin;
        }

有人可以帮我怎么做吗..?

【问题讨论】:

  • MVC 已经为此提供了一个内置方法。在您的控制器中,初始化MassPayList 的新实例并设置其属性,然后设置return Json(yourInstance);
  • @StephenMuecke 你能举个例子吗?如果没关系??
  • 它只是MassPayList model = new MassPayList(); model.oauth_consumer_key = "some_oauth_token"; 和其他属性(包括将新的MassPay 添加到属性mass_pays)然后在控制器中 - return Json(model, JsonRequestBehavior.AllowGet);Json() 方法为您正确生成了 json 数据。注意如果它是一个POST方法,那么你可以省略Json()方法的第二个参数
  • @StephenMuecke 所以你想让我生成两个 JSON 并将它们组合起来???
  • 我添加了批量支付的所有属性,我可以创建多个实例。我不确定有多少用户用户会通过.. 它不固定...所以如果用户通过了三个数组,那么我会一直计算它.. 我不确定如何做到这一点

标签: c# asp.net .net json asp.net-mvc


【解决方案1】:

如果您使用的是 ASP.NET MVC,则只需使用现有类使用 Json 响应操作。

你可以简单地在控制器中做这样的事情:

return Json(new { PoId = newPoId, Success = true });

或实际的具体模型类:

var _AddMassPayRequestList = new AddMassPayRequestList();
  ...

返回您的 AddMassPayRequestList 类的填充实例:

return Json(_AddMassPayRequestList);

【讨论】:

  • @T McKeown 我想创建 JSON,但我使用的方法不起作用。你能告诉我如何编写 usinh Jobject。??
【解决方案2】:

所以最后我得到了这个答案,它的结构很简单。使用这个你可以创建任何类型的 Json... 它不必遵循相同的结构..

这背后的逻辑是在开始时添加你想要的东西,创建类并在你想要添加到 json 的属性中。所以 while passign 只需添加 for 循环并将 Object 传递给列表..它将循环并为您创建 JSon..

如果您有任何疑问,请告诉我很乐意为您提供帮助

 public String ToJSONRepresentation(List<MassPay> lMassPay)
        {

            StringBuilder sb = new StringBuilder();
            JsonWriter jw = new JsonTextWriter(new StringWriter(sb));

            jw.Formatting = Formatting.Indented;
            jw.WriteStartObject();
            jw.WritePropertyName("oauth_consumer_key");
            jw.WriteValue("asdasdsadasdas");
            jw.WritePropertyName("mass_pays");
            jw.WriteStartArray();

            int i;
            i = 0;

            for (i = 0; i < lMassPay.Count; i++)
            {
                jw.WriteStartObject();
                jw.WritePropertyName("legal_name");
                jw.WriteValue(lMassPay[i].legal_name);
                jw.WritePropertyName("account_number");
                jw.WriteValue(lMassPay[i].account_number);
                jw.WritePropertyName("routing_number");
                jw.WriteValue(lMassPay[i].routing_number);
                jw.WritePropertyName("amount");
                jw.WriteValue(lMassPay[i].amount);
                jw.WritePropertyName("trans_type");
                jw.WriteValue(lMassPay[i].trans_type);
                jw.WritePropertyName("account_class");
                jw.WriteValue(lMassPay[i].account_class);
                jw.WritePropertyName("account_type");
                jw.WriteValue(lMassPay[i].account_type);
                jw.WritePropertyName("status_url");
                jw.WriteValue(lMassPay[i].status_url);
                jw.WritePropertyName("supp_id");
                jw.WriteValue(lMassPay[i].supp_id);
                jw.WriteEndObject();
            }
            jw.WriteEndArray();
            jw.WriteEndObject();
            return sb.ToString();
        }

【讨论】:

    猜你喜欢
    • 2013-08-17
    • 1970-01-01
    • 2017-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-21
    • 2018-06-08
    • 2017-02-22
    相关资源
    最近更新 更多