c# - 有时是,有时不是JSON错误:“没有为'System.String'类型定义无参数构造函数”

标签 c# ios asp.net .net json

这是我的代码:

JavaScriptSerializer serializer = new JavaScriptSerializer();
Dictionary<string, string> responseVals = serializer.Deserialize<Dictionary<string, string>>(response);

response
{
  "status": 21007
}

有用。

response
{
  "receipt": {
    "receipt_type": "ProductionSandbox",
    "adam_id": 0,
    "app_item_id": 0,
    "bundle_id": "...",
    "application_version": "1.0",
    "download_id": 0,
    "version_external_identifier": 0,
    "receipt_creation_date": "...",
    "receipt_creation_date_ms": "...",
    "receipt_creation_date_pst": "...",
    "request_date": "...",
    "request_date_ms": "...",
    "request_date_pst": "...",
    "original_purchase_date": "...",
    "original_purchase_date_ms": "...",
    "original_purchase_date_pst": "...",
    "original_application_version": "1.0",
    "in_app": [
      {
        "quantity": "1",
        "product_id": "...",
        "transaction_id": "...",
        "original_transaction_id": "...",
        "purchase_date": "...",
        "purchase_date_ms": "...",
        "purchase_date_pst": "...",
        "original_purchase_date": "...",
        "original_purchase_date_ms": "..",
        "original_purchase_date_pst": "...",
        "is_trial_period": "false"
      }
    ]
  },
  "status": 0,
  "environment": "Sandbox"
}

我收到一个错误:

没有为'System.String'的类型定义无参数的构造函数

为什么会有所不同?

这是在Web服务(Asp.net)中,用于验证应用购买中的iOS(在沙箱中)。也许这很重要。

最佳答案

为什么会有所不同?

您的第一个示例正在工作,因为您正在传递原始数据
将其反序列化为Dictionary<string, string>,但是在第二个示例中,您尝试转换自定义
对象,即receipt到不可能的字符串


如果要反序列化特定属性,则可以将此json字符串转换为JObject,然后使用该属性获取值

    string json = @"{
      status: '20122',
      OS: [
        'Windows',
        'macintosh'
      ]
    }";

    JObject obj = JObject.Parse(json);
    Console.WriteLine(obj["status"]);  //20122

.Net fiddle

关于c# - 有时是,有时不是JSON错误:“没有为'System.String'类型定义无参数构造函数”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61802967/

相关文章:

android - iOS 和 Android 上的 GPS 位置

ios - 在 UITextField 的光标位置插入字符串

c# - 无法将 System.Uri 类型隐式转换为字符串

c# - 找出函数内部使用了哪些变量?

ios - FaSTLane Boarding 与双因素身份验证

菜单和子菜单之间的 CSS 闪烁

javascript - ASP.Net Razor Pages - 如何将 json 从 razor 页面返回到 javascript $.getJson?

c# - 使用星号显示和揭开字母

c# - 设备类在 .net MAUI 中被标记为过时

asp.net - 带有 IHttpControllerSelector 的 AttributeRouting - Api 版本控制