gpt4 book ai didi

c# - ServiceStack.Text 没有按预期序列化我的对象

转载 作者:行者123 更新时间:2023-12-02 05:21:16 25 4
gpt4 key购买 nike

我正在尝试使用 Newtonsoft.JsonServiceStack.Text 库比较序列化/反序列化的性能结果。我有一个名为 Application 的大类,我正在使用此类的一个实例来执行这些操作。对于同一个实例,NewtonSoft.Json 工作正常并为我提供以下输出:

{
  "$id": "1",
  "_expiryDate": {
    "$id": "2",
    "_underlyingValue": null,
    "_isModified": false,
    "_isTrimmed": false
  },
  "_number": {
    "$id": "3",
    "_underlyingValue": 700771,
    "_isModified": true,
    "_isTrimmed": false
  },
  "_sobfDate": {
    "$id": "4",
    "_underlyingValue": null,
    "_isModified": false,
    "_isTrimmed": false
  },
  "_applyDate": {
    "$id": "5",
    "_underlyingValue": "/Date(1355127719000+0200)/",
    "_isModified": true,
    "_isTrimmed": false
  },
  "_approvalDate": {
    "$id": "6",
    "_underlyingValue": null,
    "_isModified": false,
    "_isTrimmed": false
  },
  "_contractDate": {
    "$id": "7",
    "_underlyingValue": null,
    "_isModified": false,
    "_isTrimmed": false
  },
  "_associatedLimitOffers": {
    "$id": "8",
    "$values": []
  },
  "_decisionTreeApprovals": {
    "$id": "9",
    "$values": [
      {
        "$id": "10",
        "_entity": {
          "$id": "11",
          "_date": null,
          "_rules": null,
          "_result": {
            "$id": "12",
            "_underlyingValue": 30,
            "_isModified": true,
            "_isTrimmed": false
          },
          "_applicant": null,
          "_activity": null,
          "_type": null,
          "_application": null,
          "_createdAt": null,
          "_id": null,
          "_isDeleted": null,
          "_isModifiedByOwnProcess": null,
          "_version": null,
          "_createdBehalfOf": null,
          "_createdBy": null,
          "_process": null,
          "_clientState": 0,
          "_serverState": 0,
          "_isLoaded": false,
          "_isTrimmed": false
        },
        "_clientState": 0,
        "_serverEntityId": null,
        "_serverEntityTypeName": null,
        "_serverState": 0,
        "_isLoaded": false,
        "_isTrimmed": false
      }
    ]
  },
  "_courierTasks": {
    "$id": "13",
    "$values": []
  },
  "_guarantors": {
    "$id": "14",
    "$values": []
  },
  "_utilization": {
    "$id": "15",
    "_entity": {
      "$id": "16",
      "_date": {
        "$id": "17",
        "_underlyingValue": null,
        "_isModified": true,
        "_isTrimmed": false
      },
      "_isBlockedUsage": null,
      "_application": null,
      "_createdAt": null,
      "_id": null,
      "_isDeleted": null,
      "_isModifiedByOwnProcess": null,
      "_version": null,
      "_createdBehalfOf": null,
      "_createdBy": null,
      "_process": null,
      "_clientState": 0,
      "_serverState": 0,
      "_isLoaded": false,
      "_isTrimmed": false
    },
    "_clientState": 0,
    "_serverEntityId": null,
    "_serverEntityTypeName": null,
    "_serverState": 0,
    "_isLoaded": false,
    "_isTrimmed": false
  },
  "_associatedBalanceSheet": {
    "$id": "18",
    "$values": []
  },
  "_collaterals": {
    "$id": "19",
    "$values": []
  },
  "_submitterChannel": {
    "$id": "20",
    "_entity": {
      "$id": "21",
      "$type": "BigBank.Data.Model.ChannelDomain.VirtualChannel, BigBank.Data.Model",
      "_hierarchyDelegates": null,
      "_displayName": {
        "$id": "22",
        "_underlyingValue": "",
        "_isModified": true,
        "_isTrimmed": false
      },
      "_key": null,
      "_isActive": null,
      "_integrationCode": null,
      "_limitOptions": null,
      "_contractedOrganizations": null,
      "_constraints": null,
      "_createdAt": null,
      "_id": null,
      "_isDeleted": null,
      "_isModifiedByOwnProcess": null,
      "_version": null,
      "_createdBehalfOf": null,
      "_createdBy": null,
      "_process": null,
      "_clientState": 0,
      "_serverState": 0,
      "_isLoaded": false,
      "_isTrimmed": false
    },
    "_clientState": 0,
    "_serverEntityId": null,
    "_serverEntityTypeName": null,
    "_serverState": 0,
    "_isLoaded": false,
    "_isTrimmed": false
  },
  "_ownerChannel": {
    "$id": "23",
    "_entity": {
      "$id": "24",
      "$type": "BigBank.Data.Model.ChannelDomain.VirtualChannel, BigBank.Data.Model",
      "_hierarchyDelegates": null,
      "_displayName": {
        "$id": "25",
        "_underlyingValue": "",
        "_isModified": true,
        "_isTrimmed": false
      },
      "_key": null,
      "_isActive": null,
      "_integrationCode": null,
      "_limitOptions": null,
      "_contractedOrganizations": null,
      "_constraints": null,
      "_createdAt": null,
      "_id": null,
      "_isDeleted": null,
      "_isModifiedByOwnProcess": null,
      "_version": null,
      "_createdBehalfOf": null,
      "_createdBy": null,
      "_process": null,
      "_clientState": 0,
      "_serverState": 0,
      "_isLoaded": false,
      "_isTrimmed": false
    },
    "_clientState": 0,
    "_serverEntityId": null,
    "_serverEntityTypeName": null,
    "_serverState": 0,
    "_isLoaded": false,
    "_isTrimmed": false
  },
  "_scoreCard": {
    "$id": "26",
    "_entity": null,
    "_clientState": 0,
    "_serverEntityId": null,
    "_serverEntityTypeName": null,
    "_serverState": 0,
    "_isLoaded": false,
    "_isTrimmed": false
  },
  "_seller": {
    "$id": "27",
    "_entity": null,
    "_clientState": 0,
    "_serverEntityId": null,
    "_serverEntityTypeName": null,
    "_serverState": 0,
    "_isLoaded": false,
    "_isTrimmed": false
  },
  "_priority": {
    "$id": "28",
    "_underlyingValue": null,
    "_isModified": false,
    "_isTrimmed": false
  },
  "_merchandise": {
    "$id": "29",
    "_entity": null,
    "_clientState": 0,
    "_serverEntityId": null,
    "_serverEntityTypeName": null,
    "_serverState": 0,
    "_isLoaded": false,
    "_isTrimmed": false
  },
  "_payment": {
    "$id": "30",
    "_entity": null,
    "_clientState": 0,
    "_serverEntityId": null,
    "_serverEntityTypeName": null,
    "_serverState": 0,
    "_isLoaded": false,
    "_isTrimmed": false
  },
  "_requestedTerm": {
    "$id": "31",
    "_entity": {
      "$id": "32",
      "_maturity": null,
      "_application": null,
      "_items": null,
      "_product": {
        "$id": "33",
        "_entity": {
          "$id": "34",
          "_key": null,
          "_isActive": null,
          "_description": {
            "$id": "35",
            "_underlyingValue": "",
            "_isModified": true,
            "_isTrimmed": false
          },
          "_beginDate": null,
          "_endDate": null,
          "_limitOptions": null,
          "_baseProduct": null,
          "_derivedProducts": null,
          "_attributes": null,
          "_hierarchyDelegates": null,
          "_createdAt": null,
          "_id": null,
          "_isDeleted": null,
          "_isModifiedByOwnProcess": null,
          "_version": null,
          "_createdBehalfOf": null,
          "_createdBy": null,
          "_process": null,
          "_clientState": 0,
          "_serverState": 0,
          "_isLoaded": false,
          "_isTrimmed": false
        },
        "_clientState": 0,
        "_serverEntityId": null,
        "_serverEntityTypeName": null,
        "_serverState": 0,
        "_isLoaded": false,
        "_isTrimmed": false
      },
      "_accumulatedInterestUsage": null,
      "_pricingFactor": null,
      "_createdAt": null,
      "_id": null,
      "_isDeleted": null,
      "_isModifiedByOwnProcess": null,
      "_version": null,
      "_createdBehalfOf": null,
      "_createdBy": null,
      "_process": null,
      "_clientState": 0,
      "_serverState": 0,
      "_isLoaded": false,
      "_isTrimmed": false
    },
    "_clientState": 0,
    "_serverEntityId": null,
    "_serverEntityTypeName": null,
    "_serverState": 0,
    "_isLoaded": false,
    "_isTrimmed": false
  },
  "_status": {
    "$id": "36",
    "_entity": null,
    "_clientState": 0,
    "_serverEntityId": null,
    "_serverEntityTypeName": null,
    "_serverState": 0,
    "_isLoaded": false,
    "_isTrimmed": false
  },
  "_applicant": {
    "$id": "37",
    "_entity": {
      "$id": "38",
      "$type": "BigBank.Data.Model.PersonDomain.Person, BigBank.Data.Model",
      "_birthDate": null,
      "_birthPlace": null,
      "_citizenshipNumber": {
        "$id": "39",
        "_underlyingValue": 11111111111,
        "_isModified": true,
        "_isTrimmed": false
      },
      "_dependentRelative": null,
      "_disabilityRate": null,
      "_religion": null,
      "_totalWorkingPeriodInMonth": null,
      "_isStaff": null,
      "_identificationCertificate": null,
      "_drivingLicense": null,
      "_passport": null,
      "_relatives": null,
      "_relativeOf": null,
      "_socialSecurities": null,
      "_workExperiences": null,
      "_decisionTreeApprovals": {
        "$id": "40",
        "$values": []
      },
      "_bloodGroup": null,
      "_gender": null,
      "_graduation": null,
      "_maritalStatus": null,
      "_name": {
        "$id": "41",
        "_first": {
          "$id": "42",
          "_underlyingValue": "TEST",
          "_isModified": true,
          "_isTrimmed": false
        },
        "_last": {
          "$id": "43",
          "_underlyingValue": "TEST",
          "_isModified": true,
          "_isTrimmed": false
        },
        "_maiden": null
      },
      "_nationality": null,
      "_deathNotice": null,
      "_workingStatus": null,
      "_profession": null,
      "_birthProvince": null,
      "_balanceSheet": {
        "$id": "44",
        "$values": []
      },
      "_predefinedLimitOffers": null,
      "_accounts": null,
      "_locations": null,
      "_partnerships": null,
      "_applications": null,
      "_guarantoredRetailLoanApplications": null,
      "_customer": null,
      "_tax": null,
      "_baseLimit": null,
      "_associatedDocuments": null,
      "_phones": null,
      "_emails": null,
      "_isInsured": null,
      "_insurances": null,
      "_comments": null,
      "_createdAt": null,
      "_id": {
        "$id": "45",
        "_underlyingValue": "7c1058a6-0dd3-c378-ebaa-fdcf2a8a6936",
        "_isModified": true,
        "_isTrimmed": false
      },
      "_isDeleted": null,
      "_isModifiedByOwnProcess": null,
      "_version": null,
      "_createdBehalfOf": null,
      "_createdBy": null,
      "_process": null,
      "_clientState": 0,
      "CreditReferenceResult": {
        "$id": "46",
        "_creditReferencesApplication": null,
        "_scrCreditLimit": null,
        "_creditReferences": null,
        "_creditReferenceOwnData": null,
        "_person": null
      },
      "_serverState": 0,
      "_isLoaded": false,
      "_isTrimmed": false
    },
    "_clientState": 0,
    "_serverEntityId": null,
    "_serverEntityTypeName": null,
    "_serverState": 0,
    "_isLoaded": false,
    "_isTrimmed": false
  },
  "_purpose": {
    "$id": "47",
    "_entity": null,
    "_clientState": 0,
    "_serverEntityId": null,
    "_serverEntityTypeName": null,
    "_serverState": 0,
    "_isLoaded": false,
    "_isTrimmed": false
  },
  "_targetAccount": {
    "$id": "48",
    "_entity": null,
    "_clientState": 0,
    "_serverEntityId": null,
    "_serverEntityTypeName": null,
    "_serverState": 0,
    "_isLoaded": false,
    "_isTrimmed": false
  },
  "_contractLocation": {
    "$id": "49",
    "_entity": null,
    "_clientState": 0,
    "_serverEntityId": null,
    "_serverEntityTypeName": null,
    "_serverState": 0,
    "_isLoaded": false,
    "_isTrimmed": false
  },
  "_contractPhone": {
    "$id": "50",
    "_entity": null,
    "_clientState": 0,
    "_serverEntityId": null,
    "_serverEntityTypeName": null,
    "_serverState": 0,
    "_isLoaded": false,
    "_isTrimmed": false
  },
  "_contractEmail": {
    "$id": "51",
    "_entity": null,
    "_clientState": 0,
    "_serverEntityId": null,
    "_serverEntityTypeName": null,
    "_serverState": 0,
    "_isLoaded": false,
    "_isTrimmed": false
  },
  "_contactLocation": {
    "$id": "52",
    "_entity": null,
    "_clientState": 0,
    "_serverEntityId": null,
    "_serverEntityTypeName": null,
    "_serverState": 0,
    "_isLoaded": false,
    "_isTrimmed": false
  },
  "_contactPhone": {
    "$id": "53",
    "_entity": null,
    "_clientState": 0,
    "_serverEntityId": null,
    "_serverEntityTypeName": null,
    "_serverState": 0,
    "_isLoaded": false,
    "_isTrimmed": false
  },
  "_contactEmail": {
    "$id": "54",
    "_entity": null,
    "_clientState": 0,
    "_serverEntityId": null,
    "_serverEntityTypeName": null,
    "_serverState": 0,
    "_isLoaded": false,
    "_isTrimmed": false
  },
  "_fundsTransferType": {
    "$id": "55",
    "_underlyingValue": null,
    "_isModified": false,
    "_isTrimmed": false
  },
  "_associatedDocuments": {
    "$id": "56",
    "$values": []
  },
  "_comments": {
    "$id": "57",
    "$values": []
  },
  "_createdAt": null,
  "_id": {
    "$id": "58",
    "_underlyingValue": "b9ee4131-43c6-6fe0-be4d-bbe60e6ace97",
    "_isModified": true,
    "_isTrimmed": false
  },
  "_isDeleted": null,
  "_isModifiedByOwnProcess": null,
  "_version": null,
  "_createdBehalfOf": null,
  "_createdBy": null,
  "_process": {
    "$id": "59",
    "_entity": {
      "$id": "60",
      "_state": {
        "$id": "61",
        "_underlyingValue": "Rejected(Completed)",
        "_isModified": true,
        "_isTrimmed": false
      },
      "_description": {
        "$id": "62",
        "_underlyingValue": "Red(Tamamlandı)",
        "_isModified": true,
        "_isTrimmed": false
      },
      "_isCompleted": null,
      "_correlationKey": null,
      "_logs": null,
      "_migration": null,
      "_parent": null,
      "_children": null,
      "_variables": null,
      "_definition": null,
      "_createdAt": null,
      "_id": null,
      "_isDeleted": null,
      "_isModifiedByOwnProcess": null,
      "_version": null,
      "_createdBehalfOf": null,
      "_createdBy": null,
      "_process": null,
      "_clientState": 0,
      "_serverState": 0,
      "_isLoaded": false,
      "_isTrimmed": false
    },
    "_clientState": 0,
    "_serverEntityId": null,
    "_serverEntityTypeName": null,
    "_serverState": 0,
    "_isLoaded": false,
    "_isTrimmed": false
  },
  "_clientState": 0,
  "_serverState": 0,
  "_isLoaded": false,
  "_isTrimmed": false
}

在这背后 ServiceStack.Text 的输出只是:

{"_serverState":"New","_isLoaded":false,"_isTrimmed":false}

这是我对两者进行序列化的方法:

    private List<string> SerializeUsingServiceStackText(List<Application> applications)
{
List<string> strings = new List<string>();

foreach (Application item in applications)
{
string s = ServiceStack.Text.JsonSerializer.SerializeToString<Application>(item);
strings.Add(s);
}

return strings;
}

Newtonsoft.Json.JsonSerializerSettings jsonSerializerSettings =
new Newtonsoft.Json.JsonSerializerSettings()
{
PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.All,
DateFormatHandling = Newtonsoft.Json.DateFormatHandling.MicrosoftDateFormat,
TypeNameHandling = Newtonsoft.Json.TypeNameHandling.Auto
};

private List<string> SerializeUsingJsonNet(List<Application> applications)
{
List<string> strings = new List<string>();

foreach (Application item in applications)
{
strings.Add(Newtonsoft.Json.JsonConvert.SerializeObject(item, Newtonsoft.Json.Formatting.None, jsonSerializerSettings));
}

return strings;
}

我做错了什么?我是否必须像在 Newtonsoft.Json 中那样对 ServiceStack.Text 库进行一些设置?

最佳答案

可序列化的属性通过 this method 检索.它只获得公共(public)的、可读的属性。没有私有(private)属性(property)或领域。看起来你要么必须改变你的 POCO,要么你被困在 Newtonsoft.Json :)

也许 this GitHub issue回答你的问题?

编辑:我猜你可以做这样的事情:

var bindingFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic;
TypeConfig<Application>.Properties = typeof(Application).GetProperties(bindingFlags);

您可能还应该检查 getter 并且属性没有用 IgnoreDataMemberAttribute 等标记。但是您仍然被属性所困...

我可能是错的,但我看不出有什么办法可以将其插入到框架中,因此您必须对所有要反序列化/序列化的类型执行此操作。也许您可以制作一个通用的扩展方法来执行此操作,然后反序列化/序列化对象?

关于c# - ServiceStack.Text 没有按预期序列化我的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13798528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com