简体   繁体   中英

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

I'm trying to turn the string result below in the first line of code into an object of type "Root.cs". I have "Root.cs" class set up in my Visual Studio 2019 "solution" with proper classes set up to turn the string result into the object.

This line of code works fine to get me the string I need:

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

Here's the contents of the string "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}],"

Now, I need to create the object of type "Root" (My Model Class) for the purpose of picking and choosing certain values out of it. Shouldn't this line work for that?

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

Here's the definition of 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; }

My "result" and my "Root.cs" class are each larger than the 30,000 characters limit here. So, I've had to only post a portion of my string "result" and my "Root.cs" class. I'm trying to simplify this question. Please forgive me while I learn how to use this...

Answer: I was making the newbie mistake of trying to return a string that I picked out of a "Root.cs" Model class as a Root object. I had the return type of the method set to Root instead of string. Upon changing the return type to string, that part of my solution works fine.

It works fine like this:

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;
 }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM