序列化,反序列化C#/ JSON对象并且没有大小写问题 - javascript

当我编写Javascript函数时,我相信惯例是使用pascalCase作为属性名(第一个单词的下一个首字母),但是在创建C#属性时,应该使用CamelCase(每个单词的首字母大写。)但是,两种语言都区分大小写,并且由于大小写不匹配,在将Javascript或C#对象序列化为JSON并返回时将导致问题。

我对在C#对象上添加属性以将C#CamelCase属性映射到Javascript pascalCase表单的方法感到满意;看起来很干净,明确,可以让我在使用每种语言编写时都保持“这种情况总是这样”的方法,我觉得这可以帮助我减少错误,并且喜欢一致性。但是,对于所生成的对象(例如,Entity Framework对象),这些对象在没有这些属性的情况下生成,如果我要添加它们,然后决定重新生成以拾取数据库更改,则这些属性将丢失。 (我正在使用Visual Studioo,ASP.NET MVC和数据库中的反向工程代码“ First”。)

我是所有这些技术的新手。我想就如何轻松地序列化这些对象向您提出建议,以便即使生成的对象也可以始终使用所需的大小写。在这种情况下,有没有办法做到这一切?

关于这个问题有很多问题,但是我不确定这个特殊的角度是否已经解决。

这是一个人为设计的示例,我在其中尝试尝试学习这些主题:

function Person(name, age) 
{
    this.name = name;
    this.age = age;
    return this;
}


$(document).ready(function () {

    /* Finds all of the controls whose IDs begin with PushMeButton */
    $("[id^=PushMeButton]").click(function () {

        //var id = $(this).attr('id');

        var url = '/Home/Ajax/';
        var joe = new Person("Joe", 98);

        $.ajax({
            type: 'POST',
            url: url,
            dataType: 'json',
            data: joe,
            success: function (person) {
                alert('im back');
                alert(person.age);
            },
            error: function (xhr, ajaxOptions, error) {
                alert(xhr.status);
                alert('Error: ' + xhr.responseText);
            }
        });
    });
});

//Server:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Newtonsoft.Json;
using Restaurant.Data;

namespace MyApp.Controllers
{
    public class Person
    {
        [JsonProperty(PropertyName = "name")]
        public string Name
        {
            get;
            set;
        }

        [JsonProperty(PropertyName = "age")]
        public int Age
        {
            get;
            set;
        }
    }

    public class HomeController : Controller
    {
        [HttpPost]
        public string Ajax(Person person)
        {
            person.Name = "Mr. " + person.Name;
            person.Age += 10;
            string personJson = JsonConvert.SerializeObject(person);

            return personJson;
        }
    }
}

参考方案

您可以使用ContractResolver类的JsonSerializerSettings属性:

var settings = new JsonSerializerSettings{ ContractResolver = new CamelCasePropertyNamesContractResolver()  };
var s = JsonConvert.SerializeObject(object, settings);
var newObject = JsonConvert.DeserializeObject<type>(s, settings);

如果我得到url(''),我该如何使用另一个URL - javascript

我是新手,正在写这篇文章,但是如果源上没有图像,那么我只有空白。有人可以告诉我,如果我正在获取背景图像,如何获取/images/no-image.jpg:url();这是我的代码:<div class="uk-clearfix uk-position-relative"> <div class="recipeb…

对ID为'abc%'的dom执行操作 - javascript

我想对ID为'abc%'的DOM进行一些操作<a id='abc1'></a> <a id='abc2'></a> <a id='abc3'></a> <a id='abc4'></a>…

Jsonp没有出现``访问控制允许来源''错误 - javascript

在我的PHP中,我喜欢这样来回显jsonp类型的“ json数据”echo $_GET['callback'] . '('.json_encode($arr).')'; 在我的js(angularjs)中,$http.get('http://example.com/app/?callbac…

获取JavaScript值到C#字符串 - javascript

                        是否可以在C#中执行类似的操作?该值为“ 10/05/2014”string jsValue = javascript("$('#EstimatedStartDate').val()"); 参考方案 您能否更详细地阐明您要做什么。看来您正在尝试从javascript(客户…

如何使用JavaScript访问嵌入式ASP.NET GlobalResources? - javascript

我正在开发一个遗留的ASP.NET项目,该项目正试图缓慢地进行调整,但是如果没有像巧克力手指屋一样塌陷的情况,我将无法进行重大更改。我试图为此找到解决方案,但由于术语的特定混合(“ javascript”,“ embedded”和/或“ resource”只是为我提供了有关如何嵌入.js文件的信息,而失败了)。 。),这可能是一种怪异的处理方式。该项目将Ap…