gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 11:39:47 25 4
gpt4 key购买 nike

当我编写 Javascript 函数时,我认为属性名称的约定是使用 pascalCase(第一个单词的第一个字母小写),但在创建 C# 属性时,应该使用 CamelCase(每个单词的第一个字母大写)。 )但是,两种语言都区分大小写,这会导致在将 Javascript 或 C# 对象序列化为 JSON 并返回时出现问题,因为大小写不匹配。

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

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

关于这个主题有很多问题,但我不确定这个特定的 Angular 是否已得到解决。

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

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

最佳答案

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

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

关于javascript - 序列化、反序列化 C#/JSON 对象并且没有大小写问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26332849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com