我具有以下JSON,必须将其转换为GET请求的URL参数。
example is given here,但是由于此对象的复杂性,可能会有多个line_items_attributes
,每个都有所示的给定值,我很难传递正确的值。
我还尝试过序列化JSON对象并传递该值,但这也不能解决问题。
{
"purchase_invoice":
{
"date":"14/04/2015",
"due_date":"14/04/2015",
"contact_id":500,
"contact_name":"TestContact",
"reference":"TestReference",
"line_items_attributes":[
{
"unit_price":10.00,
"quantity":1,
"description":"TestLineItemAttDesc",
"tax_code_id":1,
"ledger_account_id":501,
"tax_rate_percentage":19.0,
"tax_amount":1.60
}]
}
}
我已经搜寻了一段时间,但运气不佳。任何见解都将受到赞赏,也非常欢迎!
这正在调用不支持JSON格式的传入数据的API,因此无法在服务器端执行此操作或更改Web服务以支持JSON格式的数据。
听起来您需要x-www-form-urlencoded
。
根据您的示例,它看起来像这样:
purchase_invoice%5Bdate%5D=14%2F04%2F2015&purchase_invoice%5Bdue_date%5D=14%2F04%2F2015&purchase_invoice%5Bcontact_id%5D=500&purchase_invoice%5Bcontact_name%5D=TestContact&purchase_invoice%5Breference%5D=TestReference&purchase_invoice%5Bline_items_attributes%5D%5B0%5D%5Bunit_price%5D=10&purchase_invoice%5Bline_items_attributes%5D%5B0%5D%5Bquantity%5D=1&purchase_invoice%5Bline_items_attributes%5D%5B0%5D%5Bdescription%5D=TestLineItemAttDesc&purchase_invoice%5Bline_items_attributes%5D%5B0%5D%5Btax_code_id%5D=1&purchase_invoice%5Bline_items_attributes%5D%5B0%5D%5Bledger_account_id%5D=501&purchase_invoice%5Bline_items_attributes%5D%5B0%5D%5Btax_rate_percentage%5D=19&purchase_invoice%5Bline_items_attributes%5D%5B0%5D%5Btax_amount%5D=1.6
我知道的这种编码的最佳参考是jQuery JavaScript库上未公开的jQuery.param
方法。
因此最终网址将很容易使用任何URL Encoding mechanism进行计算。在C#中,我们可以执行以下操作:
string json = "...";
string baseUrl = "http://bla.com/somepage?myJson="
string urlWithJson = baseUrl + System.Net.WebUtility.UrlEncode(json)
您是否可以通过任何方式发布数据或发送请求正文?似乎更容易/更干净。