简体   繁体   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

I'm trying to turn the string result below in the first line of code into an object of type "Root.cs".我正在尝试将下面第一行代码中的字符串结果转换为“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.我在我的 Visual Studio 2019“解决方案”中设置了“Root.cs”类,并设置了适当的类以将字符串结果转换为对象。

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:这是 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.我的“结果”和“Root.cs”类都大于此处的 30,000 个字符限制。 So, I've had to only post a portion of my string "result" and my "Root.cs" class.所以,我只需要发布我的字符串“result”和“Root.cs”类的一部分。 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.回答:我犯了一个新手错误,试图将我从“Root.cs”模型类中挑选出来的字符串作为 Root 对象返回。 I had the return type of the method set to Root instead of string.我将方法的返回类型设置为 Root 而不是字符串。 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;
 }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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