Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 文本未按预期序列化我的对象_C#_Json_Serialization_Json.net_<img Src="//i.stack.imgur.com/WM7S8.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">servicestack - Fatal编程技术网 servicestack,C#,Json,Serialization,Json.net,servicestack" /> servicestack,C#,Json,Serialization,Json.net,servicestack" />

C# 文本未按预期序列化我的对象

C# 文本未按预期序列化我的对象,c#,json,serialization,json.net,servicestack,C#,Json,Serialization,Json.net,servicestack,我试图使用Newtonsoft.Json和ServiceStack.Text库比较序列化/反序列化的性能结果。我有一个名为Application的大型类,我正在使用这个类的一个实例来执行这些操作。对于同一个实例,NewtonSoft.Json工作正常,并提供以下输出: {   "$id": "1",   "_expiryDate": {     "$id": "2",     "_underlyingValue": null,     "_isModified": false,     "_is

我试图使用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;
    }
使用ServiceStackText(列表应用程序)序列化私有列表 { 列表字符串=新列表(); foreach(应用程序中的应用程序项) { 字符串s=ServiceStack.Text.JsonSerializer.SerializeToString(项); 字符串。添加(s); } 返回字符串; } Newtonsoft.Json.Json序列化设置Json序列化设置= 新的Newtonsoft.Json.JsonSerializerSettings() { PreserveReferencesHandling=Newtonsoft.Json.PreserveReferencesHandling.All, DateFormatHandling=Newtonsoft.Json.DateFormatHandling.MicrosoftDateFormat, TypeNameHandling=Newtonsoft.Json.TypeNameHandling.Auto }; 私有列表序列化使用JSONNET(列表应用程序) { 列表字符串=新列表(); foreach(应用程序中的应用程序项) { strings.Add(Newtonsoft.Json.JsonConvert.SerializeObject(item,Newtonsoft.Json.Formatting.None,jsonSerializerSettings)); } 返回字符串; }
我做错了什么?我是否必须像在Newtonsoft.Json中那样对ServiceStack.Text库进行一些设置?

看起来您试图用私有属性序列化一个类,但ServiceStack只序列化公共属性

使用检索可序列化属性。它只获取公共的、可读的属性。没有私有属性或字段。看起来您要么必须更改POCO,要么必须使用Newtonsoft.Json:)

也许能回答你的问题

编辑:我想你可以这样做:

var bindingFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic;
TypeConfig<Application>.Properties = typeof(Application).GetProperties(bindingFlags);
var bindingFlags=bindingFlags.Instance | bindingFlags.Public | bindingFlags.NonPublic;
TypeConfig.Properties=typeof(应用程序).GetProperties(绑定标志);
您可能还应该检查getter,并且属性没有标记为
IgnoreDataMemberAttribute
等。但是您仍然需要使用属性


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

我希望以前有人用过它!在任何序列化问题中,最重要的是要包括DTO,即DTO类型和JSONTANKS,请@mythz帮助,最后我理解了这个问题。抱歉我不理解。当然不是,Newtonsoft.Json也只序列化公共属性。我在问题中分享了他们的成果。谢谢你的回答,最后我明白你的意思。对不起,我不理解,我正在研究一个我不熟悉的模型。我之所以赏金给@khellang,是因为他的回答更具描述性。谢谢你详细的回答!