使用属性名称

时间:2016-04-18 19:17:25

标签: c# json json.net

事前;我使用的是旧版本的Newtonsoft.Json(4.0.8.0)。

所以我正在尝试为Web服务器应用程序编写.NET客户端。 要将所有传入的数据包从json结构转换为.NET对象,我确实使用带有内置函数JToken.ToObject的JSON Serializer。 这要求目标.net类具有与传入的json数据完全相同的所需属性。

现在我遇到了一个数据包,其中包含C#范围内的无效属性名称(我认为是整体.NET)。 它看起来像这样。

  

“12345”:{

 "Name1/Part2": {}
 "Name2/Part2": {}
 "Name3/Part2": {}
 "Name4/Part2": {}
 "Name5/Part2": {}
     

}

相同的.net代码将是。

class DataPacket {
  public DummyObject 12345 {get; set;}


  public class DummyObject {
    public object Name1/Part2 {get; set}
    public object Name2/Part2 {get; set}
    public object Name3/Part2 {get; set}
    public object Name4/Part2 {get; set}
    public object Name5/Part2 {get; set}
  }
}

所有属性名称都是非法的('以数字开头','非法字符 - > /')。

我知道如何用Newtonsoft的Major 4版本来解决这个问题吗?

非常感谢

1 个答案:

答案 0 :(得分:2)

我相信你可以使用jsonproperty属性,所以第一个属性就像:

    [NullReferenceException: Object reference not set to an instance of an
object.]   
NServiceBus.Transports.RabbitMQ.RabbitMqQueueCreator.CreateQueueIfNecessary(Address
address, String account) in

    C:\BuildAgent\work\ef98ad7376e3379a\src\NServiceBus.RabbitMQ\RabbitMqQueueCreator.cs:15
NServiceBus.Unicast.Queuing.QueuesCreator.Install(String identity,
Configure config) in

    c:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Unicast\Queuing\QueuesCreator.cs:36
NServiceBus.Features.Starter.Run(Configure config) in

    c:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Installation\InstallationSupport.cs:75
NServiceBus.Configure.Initialize() in

    c:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Configure.cs:125
NServiceBus.Bus.Create(BusConfiguration configuration) in

    c:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Bus.cs:19   
Workopolis.CandidateSourcing.Web.WindsorInstallers.NServiceBusInstaller.Install(IWindsorContainer
container, IConfigurationStore store) in

    c:\work\CobraGit\CandidateSourcing\Web\WindsorInstallers\NServiceBusInstaller.cs:46
Castle.Windsor.Installer.AssemblyInstaller.Install(IWindsorContainer
container, IConfigurationStore store) +229   
Castle.Windsor.Installer.CompositeInstaller.Install(IWindsorContainer
container, IConfigurationStore store) +114   
Castle.Windsor.WindsorContainer.Install(IWindsorInstaller[]
installers, DefaultComponentInstaller scope) +165   
Castle.Windsor.WindsorContainer.Install(IWindsorInstaller[]
installers) +227

为每个需要转换的具有非法名称的json属性执行此操作