Chuyển đổi các khóa json thành chữ thường python

Tất nhiên, tôi không muốn chạy nó qua

public class Authority
{
    public string Username { get; set; }
    public string ApiToken { get; set; }
}
4 vì các giá trị cho
public class Authority
{
    public string Username { get; set; }
    public string ApiToken { get; set; }
}
2 và
public class Authority
{
    public string Username { get; set; }
    public string ApiToken { get; set; }
}
3 là trường hợp hỗn hợp

Tôi nhận ra rằng tôi có thể thực hiện việc này theo cách lập trình và tạo chuỗi JSON theo cách thủ công, nhưng tôi cần điều này cho khoảng 20 chuỗi dữ liệu JSON hoặc hơn và tôi đang xem liệu mình có thể tiết kiệm thời gian hay không. Tôi tự hỏi liệu có bất kỳ thư viện nào đã được xây dựng sẵn cho phép bạn thực thi chữ thường để tạo khóa không

Giải pháp tốt nhất

Bạn có thể tạo một trình giải quyết hợp đồng tùy chỉnh cho việc này. Trình giải quyết hợp đồng sau sẽ chuyển đổi tất cả các khóa thành chữ thường

public class LowercaseContractResolver : DefaultContractResolver
{
    protected override string ResolvePropertyName[string propertyName]
    {
        return propertyName.ToLower[];
    }
}

Cách sử dụng

var settings = new JsonSerializerSettings[];
settings.ContractResolver = new LowercaseContractResolver[];
var json = JsonConvert.SerializeObject[authority, Formatting.Indented, settings];

sẽ dẫn đến

{"username":"Mark","apitoken":"xyzABC1234"}

Nếu bạn luôn muốn đánh số thứ tự bằng cách sử dụng

public class Authority
{
    public string Username { get; set; }
    public string ApiToken { get; set; }
}
7, hãy xem xét gói nó trong một lớp để tránh lặp lại chính mình

public class LowercaseJsonSerializer
{
    private static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
    {
        ContractResolver = new LowercaseContractResolver[]
    };

    public static string SerializeObject[object o]
    {
        return JsonConvert.SerializeObject[o, Formatting.Indented, Settings];
    }

    public class LowercaseContractResolver : DefaultContractResolver
    {
        protected override string ResolvePropertyName[string propertyName]
        {
            return propertyName.ToLower[];
        }
    }
}

Mà có thể được sử dụng như thế này

________số 8

ASP. NET MVC4/WebAPI

Nếu bạn đang sử dụng ASP. NET MVC4/WebAPI, bạn có thể sử dụng một

public class Authority
{
    public string Username { get; set; }
    public string ApiToken { get; set; }
}
8 từ Newtonsoft. Thư viện Json được bao gồm theo mặc định

Giải pháp liên quan

Jquery – Cách định dạng ngày Microsoft JSON

public class Authority
{
    public string Username { get; set; }
    public string ApiToken { get; set; }
}
9 không cần thiết. Điều này sẽ làm việc tốt

public class Authority
{
    public string Username { get; set; }
    public string ApiToken { get; set; }
}
1

Hàm

public class Authority
{
    public string Username { get; set; }
    public string ApiToken { get; set; }
}
20 lấy phần
public class Authority
{
    public string Username { get; set; }
    public string ApiToken { get; set; }
}
21 và hàm
public class Authority
{
    public string Username { get; set; }
    public string ApiToken { get; set; }
}
22 lấy phần nguyên và bỏ qua phần
public class Authority
{
    public string Username { get; set; }
    public string ApiToken { get; set; }
}
23 ở cuối. Số kết quả được chuyển vào hàm tạo
public class Authority
{
    public string Username { get; set; }
    public string ApiToken { get; set; }
}
24

Tôi đã cố ý bỏ qua cơ số [đối số thứ 2 của

public class Authority
{
    public string Username { get; set; }
    public string ApiToken { get; set; }
}
25];

Ngoài ra, tôi hoàn toàn đồng ý với. Ngày ISO-8601 được ưa thích hơn định dạng cũ này - vì vậy định dạng này thường không được sử dụng cho sự phát triển mới

Đối với các ngày JSON được định dạng ISO-8601, chỉ cần chuyển chuỗi vào hàm tạo

public class Authority
{
    public string Username { get; set; }
    public string ApiToken { get; set; }
}
24

public class Authority
{
    public string Username { get; set; }
    public string ApiToken { get; set; }
}
9

Json – Có thể sử dụng nhận xét trong JSON

Không

JSON chỉ là dữ liệu và nếu bạn bao gồm nhận xét thì đó cũng sẽ là dữ liệu

Bạn có thể có một phần tử dữ liệu được chỉ định có tên là

public class Authority
{
    public string Username { get; set; }
    public string ApiToken { get; set; }
}
27 [hoặc thứ gì đó] mà các ứng dụng sử dụng dữ liệu JSON sẽ bỏ qua

Có lẽ bạn nên có nhận xét tốt hơn trong các quy trình tạo/nhận JSON, vì chúng phải biết trước dữ liệu JSON sẽ là gì hoặc ít nhất là cấu trúc của nó

public class Authority
{
    public string Username { get; set; }
    public string ApiToken { get; set; }
}
1
public class Authority
{
    public string Username { get; set; }
    public string ApiToken { get; set; }
}
2

Ảnh của Brett Jordan trên Bapt

Chủ Đề