如何将JSON字符串转换为URL参数(GET请求)?

问题描述 投票:2回答:2

我具有以下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格式的数据。

c# json url-parameters
2个回答
-1
投票

听起来您需要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方法。


-1
投票

因此最终网址将很容易使用任何URL Encoding mechanism进行计算。在C#中,我们可以执行以下操作:

string json = "...";
string baseUrl = "http://bla.com/somepage?myJson="
string urlWithJson = baseUrl + System.Net.WebUtility.UrlEncode(json)

您是否可以通过任何方式发布数据或发送请求正文?似乎更容易/更干净。

© www.soinside.com 2019 - 2024. All rights reserved.