簡體   English   中英

如何將 StringContent() 類型轉換為類型的對象<MyModelClass>在 C# 中使用 Visual Studio 2019

[英]How can I convert a StringContent() type to an object of type <MyModelClass> in C# with Visual Studio 2019

我正在嘗試將下面第一行代碼中的字符串結果轉換為“Root.cs”類型的對象。 我在我的 Visual Studio 2019“解決方案”中設置了“Root.cs”類,並設置了適當的類以將字符串結果轉換為對象。

這行代碼可以很好地得到我需要的字符串:

var result = client.PostAsync(endpoint, payload).Result.Content.ReadAsStringAsync().Result;

這是字符串“結果”的內容:

    {"sections":[{"id":"Building_Configuration","name":"Building_Configuration","sections":[{"id":"B    uilding_Configuration.Parameters_SP","name":"Building_Configuration.Parameters_SP","sectio      ns":[],"variables":[{"id":"Building_Configuration.Parameters_SP.fixtureStrategy_SP","name":"Bui lding_Configuration.Parameters_SP.fixtureStrategy_SP","valueType":"String","distinctValueCou    nt":3.0,"allowMultipleAssignments":false,"values":[{"name":"ETA","value":"ETA","properties":[{  "id":"fullyqualifiedname","value":"ETA","type":"String"},{"id":"name","value":"ETA","type":"Stri    ng"}],"type":"SingletonValue","assigned":"byDefault","incompatible":false},{"name":"ETD","valu  e":"ETD","properties":[{"id":"fullyqualifiedname","value":"ETD","type":"String"},{"id":"name","v    alue":"ETD","type":"String"}],"type":"SingletonValue","incompatible":false},{"name":"ETA/ETD",  "value":"ETA/ETD","properties":[{"id":"fullyqualifiedname","value":"ETA/ETD","type":"String"},{ "id":"name","value":"ETA/ETD","type":"String"}],"type":"SingletonValue","incompatible":false}],"

現在,我需要創建“根”類型的對象(我的模型類),以便從中挑選某些值。 這條線不應該為此工作嗎?

Root MyObject = JsonConvert.DeserializeObject<Root>(result);

這是 Root.cs 的定義:

public class Root
{
    public List<Sections> sections { get; set; }
    public RemovedAssignments removedAssignments { get; set; }
    public Arguments arguments { get; set; }
    public bool isComplete { get; set; }
    public bool isConfigurable { get; set; }
    public Debug debug { get; set; }
    public string language { get; set; }
    public string packagePath { get; set; }
}

public class Sections
{
    public string id { get; set; }
    public string name { get; set; }
    public List<Sections> sections { get; set; }
    public List<Variable> variables { get; set; }
    public List<Property> properties { get; set; }
}

public class RemovedAssignments
{
    public List<VariableAssignment> variableAssignments { get; set; }
    public List<object> priceLineAssignments { get; set; }
}

public class Debug
{
    public List<ScriptError> scriptError { get; set; }
}

public class Property
{
    public string id { get; set; }
    public string value { get; set; }
    public string type { get; set; }
}

public class ScriptError
{
    public string scriptName { get; set; }
    public string Error { get; set; }
}


public class Value
{
    public string name { get; set; }
    public object value { get; set; }
    public List<Property> properties { get; set; }
    public string type { get; set; }
    public string assigned { get; set; }
    public bool incompatible { get; set; }
    public double? lower { get; set; }
    public double? upper { get; set; }
}


public class Value3
{
    public string value { get; set; }
    public string name { get; set; }
    public bool exclude { get; set; }
}

public class Variable
{
    public string id { get; set; }
    public string name { get; set; }
    public string valueType { get; set; }
    public double distinctValueCount { get; set; }
    public bool allowMultipleAssignments { get; set; }
    public List<Value> values { get; set; }
    public List<Property> properties { get; set; }
}

public class Variable3
{
    public string id { get; set; }
    public string name { get; set; }
    public string valueType { get; set; }
    public bool allowMultipleAssignments { get; set; }
}

public class VariableAssignment
{
    public Variable variable { get; set; }
    public Value value { get; set; }
}

public class Arguments
{
    public Configuration Configuration { get; set; }
}
public class Configuration
{
    [JsonProperty("Building_Configuration.Parameters_SP.fixtureStrategy_SP")]
    public string BuildingConfigurationParametersSPFixtureStrategySP { get; set; }

    [JsonProperty("Building_Configuration.Parameters_SP.dimensionSelection_SP")]
    public string BuildingConfigurationParametersSPDimensionSelectionSP { get; set; }

    [JsonProperty("Building_Configuration.Parameters_SP.controllerRobotic_SP")]
    public bool BuildingConfigurationParametersSPControllerRoboticSP { get; set; }

    [JsonProperty("Building_Configuration.Parameters_SP.controllerBACNet_SP")]
    public bool BuildingConfigurationParametersSPControllerBACNetSP { get; set; }

    [JsonProperty("Building_Configuration.Parameters_SP.digitalPI_SP")]
    public string BuildingConfigurationParametersSPDigitalPISP { get; set; }


        [JsonProperty("Building_Configuration.Parameters_SP.interGroupEmergencyPower_SP")]
        public string BuildingConfigurationParametersSPInterGroupEmergencyPowerSP { get; set; }

        [JsonProperty("Building_Configuration.Parameters_SP.customJewel_SP")]
        public string BuildingConfigurationParametersSPCustomJewelSP { get; set; }

        [JsonProperty("Building_Configuration.Parameters_SP.loweringSequenceJewel_SP")]
        public string BuildingConfigurationParametersSPLoweringSequenceJewelSP { get; set; }

        [JsonProperty("Building_Configuration.Parameters_SP.inServiceJewel_SP")]
        public string BuildingConfigurationParametersSPInServiceJewelSP { get; set; }

        [JsonProperty("Building_Configuration.Parameters_SP.cat5CableFeetRequired_SP")]
        public int BuildingConfigurationParametersSPCat5CableFeetRequiredSP { get; set; }

        [JsonProperty("Building_Configuration.Parameters_SP.fiberOpticConnectorsSetOf4_SP")]
        public int BuildingConfigurationParametersSPFiberOpticConnectorsSetOf4SP { get; set; }

        [JsonProperty("Building_Configuration.Parameters_SP.cGADevices_SP")]
        public int BuildingConfigurationParametersSPCGADevicesSP { get; set; }

        [JsonProperty("Building_Configuration.Parameters_SP.fiberOpticCableFeetRequired_SP")]
        public int BuildingConfigurationParametersSPFiberOpticCableFeetRequiredSP { get; set; }

        [JsonProperty("Building_Configuration.Parameters_SP.qtyOfGatewayForLiftNet_SP")]
        public int BuildingConfigurationParametersSPQtyOfGatewayForLiftNetSP { get; set; }

        [JsonProperty("Building_Configuration.Parameters_SP.qtyOfGroupEthernetBoxWIMSSoftwareOnly_SP")]
        public int BuildingConfigurationParametersSPQtyOfGroupEthernetBoxWIMSSoftwareOnlySP { get; set; }

        [JsonProperty("Building_Configuration.Parameters_SP.interGroupStarBox_SP")]
        public int BuildingConfigurationParametersSPInterGroupStarBoxSP { get; set; }

        [JsonProperty("Building_Configuration.Parameters_SP.mediaConverterAndPowerSource_SP")]
        public int BuildingConfigurationParametersSPMediaConverterAndPowerSourceSP { get; set; }

        [JsonProperty("Building_Configuration.Parameters_SP.qtyOfSoftwareSiteKeyJBFiles_SP")]
        public int BuildingConfigurationParametersSPQtyOfSoftwareSiteKeyJBFilesSP { get; set; }

        [JsonProperty("Building_Configuration.Parameters_SP.doorOpenSignalJewel_SP")]
        public bool BuildingConfigurationParametersSPDoorOpenSignalJewelSP { get; set; }

        [JsonProperty("Building_Configuration.Parameters_SP.mountingProvisionsForMonitor_SP")]
        public bool BuildingConfigurationParametersSPMountingProvisionsForMonitorSP { get; set; }

        [JsonProperty("Building_Configuration.Parameters_SP.intercomSpace_SP")]
        public bool BuildingConfigurationParametersSPIntercomSpaceSP { get; set; }

        [JsonProperty("Building_Configuration.Parameters_SP.specialEngraving_SP")]
        public bool BuildingConfigurationParametersSPSpecialEngravingSP { get; set; }

        [JsonProperty("Building_Configuration.Parameters_SP.lobbyPanelFinish_SP")]
        public string BuildingConfigurationParametersSPLobbyPanelFinishSP { get; set; }

        [JsonProperty("Building_Configuration.Parameters_SP.includeAGILEDesignCenter_SP")]
        public int BuildingConfigurationParametersSPIncludeAGILEDesignCenterSP { get; set; }

        [JsonProperty("Building_Configuration.Parameters_SP.qtyKiosksOver300Ft_SP")]
        public int BuildingConfigurationParametersSPQtyKiosksOver300FtSP { get; set; }

        [JsonProperty("Building_Configuration.Parameters_SP.dDSecurityInterfaceType_SP")]
        public bool BuildingConfigurationParametersSPDDSecurityInterfaceTypeSP { get; set; }

        [JsonProperty("Building_Configuration.Parameters_SP.iMSOwnersStandard_SP")]
        public int BuildingConfigurationParametersSPIMSOwnersStandardSP { get; set; }

        [JsonProperty("Building_Configuration.Parameters_SP.qtyOfIMSOwnersEnhanced_SP")]
        public int BuildingConfigurationParametersSPQtyOfIMSOwnersEnhancedSP { get; set; }

        [JsonProperty("Building_Configuration.Parameters_SP.totalGroupHallStation_SP")]
        public int BuildingConfigurationParametersSPTotalGroupHallStationSP { get; set; }

        [JsonProperty("Building_Configuration.Parameters_SP.totalUnitHallStation_SP")]
        public int BuildingConfigurationParametersSPTotalUnitHallStationSP { get; set; }

        [JsonProperty("Building_Configuration.Parameters_SP.totalBuildingEquip_SP")]
        public int BuildingConfigurationParametersSPTotalBuildingEquipSP { get; set; }

        [JsonProperty("Building_Configuration.Parameters_SP.IsSmartRescue10_Bool_SP")]
        public bool BuildingConfigurationParametersSPIsSmartRescue10BoolSP { get; set; }

        [JsonProperty("Building_Configuration.Parameters_SP.IsSmartRescue5_Bool_SP")]
        public bool BuildingConfigurationParametersSPIsSmartRescue5BoolSP { get; set; }

        [JsonProperty("Building_Configuration.Parameters_SP.lobbyPanel_SP")]
        public string BuildingConfigurationParametersSPLobbyPanelSP { get; set; }

        [JsonProperty("Building_Configuration.Parameters_SP.qtyOfSmartRescuePhone10_StndAlone_SP")]
        public int BuildingConfigurationParametersSPQtyOfSmartRescuePhone10StndAloneSP { get; set; }

        [JsonProperty("Building_Configuration.Parameters_SP.qtyOfSmartRescuePhone5_Lobby_SP")]
        public int BuildingConfigurationParametersSPQtyOfSmartRescuePhone5LobbySP { get; set; }

        [JsonProperty("Building_Configuration.Parameters_SP.qtyOfSmartRescuePhone5_StndAlone_SP")]
        public int BuildingConfigurationParametersSPQtyOfSmartRescuePhone5StndAloneSP { get; set; }

        [JsonProperty("Building_Configuration.Parameters_SP.qtyOfSmartRescuePhone10_Lobby_SP")]
        public int BuildingConfigurationParametersSPQtyOfSmartRescuePhone10LobbySP { get; set; }

        [JsonProperty("Building_Configuration.Parameters.ASYEAR_INT")]
        public int BuildingConfigurationParametersASYEARINT { get; set; }

        [JsonProperty("Building_Configuration.Parameters.BLANDINGS")]
        public int BuildingConfigurationParametersBLANDINGS { get; set; }

        [JsonProperty("Building_Configuration.Parameters.ASTYPE")]
        public string BuildingConfigurationParametersASTYPE { get; set; }

        [JsonProperty("Building_Configuration.Parameters.ASYEAR")]
        public string BuildingConfigurationParametersASYEAR { get; set; }

        [JsonProperty("Building_Configuration.Parameters.BLDGNAME")]
        public string BuildingConfigurationParametersBLDGNAME { get; set; }

        [JsonProperty("Building_Configuration.Parameters.IBCSDS")]
        public int BuildingConfigurationParametersIBCSDS { get; set; }

        [JsonProperty("Building_Configuration.Parameters.ELEVBASE")]
        public int BuildingConfigurationParametersELEVBASE { get; set; }

        [JsonProperty("Building_Configuration.Parameters.SEISZONE")]
        public string BuildingConfigurationParametersSEISZONE { get; set; }

        [JsonProperty("Building_Configuration.Parameters.SEISEQUIP")]
        public string BuildingConfigurationParametersSEISEQUIP { get; set; }

        [JsonProperty("Building_Configuration.Parameters.ISSEISMIC")]
        public string BuildingConfigurationParametersISSEISMIC { get; set; }

        [JsonProperty("Building_Configuration.Parameters.IBCSDC")]
        public string BuildingConfigurationParametersIBCSDC { get; set; }

        [JsonProperty("Building_Configuration.Parameters.IBCIP")]
        public string BuildingConfigurationParametersIBCIP { get; set; }

        [JsonProperty("Building_Configuration.Parameters.NBCCPDB")]
        public string BuildingConfigurationParametersNBCCPDB { get; set; }

        [JsonProperty("Building_Configuration.Parameters.NBCCIE")]
        public int BuildingConfigurationParametersNBCCIE { get; set; }

        [JsonProperty("Building_Configuration.Parameters.NBCCFA")]
        public int BuildingConfigurationParametersNBCCFA { get; set; }

        [JsonProperty("Building_Configuration.Parameters.NBCCSA02")]
        public int BuildingConfigurationParametersNBCCSA02 { get; set; }

        [JsonProperty("Building_Configuration.Parameters.BLDGCODE")]
        public string BuildingConfigurationParametersBLDGCODE { get; set; }

        [JsonProperty("Building_Configuration.Parameters.HALLFIN")]
        public string BuildingConfigurationParametersHALLFIN { get; set; }

        [JsonProperty("Building_Configuration.Parameters.MRP")]
        public string BuildingConfigurationParametersMRP { get; set; }

        [JsonProperty("Building_Configuration.Parameters.HALLMAT")]
        public string BuildingConfigurationParametersHALLMAT { get; set; }

我的“結果”和“Root.cs”類都大於此處的 30,000 個字符限制。 所以,我只需要發布我的字符串“result”和“Root.cs”類的一部分。 我試圖簡化這個問題。 在我學習如何使用它時請原諒我...

回答:我犯了一個新手錯誤,試圖將我從“Root.cs”模型類中挑選出來的字符串作為 Root 對象返回。 我將方法的返回類型設置為 Root 而不是字符串。 將返回類型更改為字符串后,我的解決方案的那部分工作正常。

它像這樣工作正常:

public string CreateExecPost(FormData person2){

            var payload = new StringContent(newPost, Encoding.UTF8, "application/json");
        
        var result = client.PostAsync(endpoint, payload).Result.Content.ReadAsStringAsync().Result;//result is already in JSON

        Root MyObject = JsonConvert.DeserializeObject<Root>(result);

        //return MyObject.language; //WORKS
        return MyObject.language;
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM