【问题标题】:Can you pass json into Dictionary<string, class> through a Url?你可以通过 URL 将 json 传递给 Dictionary<string, class> 吗?
【发布时间】:2014-03-12 15:57:38
【问题描述】:

我正在尝试将 url 中的 json 参数传递到字典中。我已确认我的 json 在 http://www.freeformatter.com/json-validator.html 上有效。这是我的 json 对象:

{
    "TagName": "property_details_address_address1",
    "ValuationDetails": {
        "TagValue": "Test",
        "ImageBase64": ""
    }
}

班级:

public class ValuationDetails
{
  public string TagValue { get; set; }
  public string ImageBase64 { get; set; }
}

它传递给的方法:

public void UploadValuationDetails(Dictionary<string, ValuationDetails> JsonResult, int Id)
{
   DatabaseHelper DBH = new DatabaseHelper();

   foreach (var item in JsonResult)
   {                 //(ValuationId ,TagName , TagValue           , ImageBase64)
     DBH.WSValuationDetailUpdate(Id, item.Key, item.Value.TagValue, item.Value.ImageBase64);
   }         
}

所以我的网址是:

http://localhost:0000/APIService/UploadValuationDetails?JsonResult={TagName:"property_details_address_address1",ValuationDetails:{TagValue:"Test","ImageBase64":""}}&Id=4785

目前我的 JSON 结果显示计数为 0,但应该有一个对象字典,其键为 Tagname 和一个值,其中 tagValue = test 和 ImageBase64 = ""

【问题讨论】:

  • 您应该使用 POST 来传递这样的 JSON 块,而不是 GET(因此不是作为 URL 的参数,而是作为请求正文)。
  • @Lloyd 该方法将像 Web 服务方法一样被远程调用。我只是想通过在运行本地主机时在浏览器中物理输入 URL 来运行一些测试。
  • @Pomster:您是否尝试过对参数值进行 url 编码?

标签: c# json url dictionary


【解决方案1】:

看到您的 JSON 示例,我了解您正试图在 Dictionary&lt;string, ValuationDetails&gt; 中解释它,但这无法完成,因为 TagName 的值在 Dictionary 参数中不是 ValuationDetails。所以,你可以像下面这样分类,再试一次:

public class RootObject
{
    public string TagName { get; set; }
    public ValuationDetails ValuationDetails { get; set; }
}

如果你愿意,

应该有一个对象字典,其键为 Tagname 和一个值,其中 tagValue = test 和 ImageBase64 = ""

那么您的 JSON 字符串应该类似于:

{
    "TagName1": {
        "TagValue": "Test1",
        "ImageBase64": ""
    },
    "TagName2": {
        "TagValue": "Test2",
        "ImageBase64": ""
    }
}

如果是这种情况,那么您为循环提供的代码应该可以正常工作。

【讨论】:

    猜你喜欢
    • 2015-07-02
    • 2012-05-13
    • 2012-12-02
    • 2011-07-17
    • 2013-11-26
    • 2020-09-23
    • 1970-01-01
    • 2016-12-11
    • 2021-08-10
    相关资源
    最近更新 更多