Thay đổi ký tự thụt đầu dòng của file json
Xin chào các bạn, chủ đề mình cần thảo luận là về cấu trúc của file .json nha!
Đây là hai cấu trúc file tương ứng từ trên xuống là sử dụng [space] và [ ] ở thụt đầu dong.
{
"$ten":"Nam",
"$mssv":"123456",
"$diemcacmon": [
{
"$tenmonhoc":"toan",
"diemthi":7,
"$tong":7.25
}
]
}
{
"$ten":"Nam",
"$mssv":"123456",
"$diemcacmon": [
{
"$tenmonhoc":"toan",
"diemthi":7,
"$tong":7.25
}
]
}
Mình đã dùng C# viết chương trình ghi ra một file json vd tên sinhvien.json
thì cấu trúc mặc định của file là những “thụt đầu dòng” đều sử dụng khoảng trắng [space].
vd1
....
[space][space]"$ten":"Nam",
....
Nhưng mình muốn đổi những “thụt đầu dòng” này thành tab ( ) , cụ thể là 2 space = 1 tab.
vd2
....
[ ]"$ten":"Nam",
....
Vì trong project mình có một tool đã sinh ra file json mà đã sử dụng tab( ) như vd2.
->và nó là bất di bất dịch, mình bị BUỘC phải sinh ra file có cấu trúc . ( Các bạn xem như mặc định luôn nha (T_T)).
và mình cũng đã tổng kết đc như sau:
-2 space = 1 tab( )
-Cách giải quyết mình là :
+Đọc chuỗi string sau khi parse file json.
+Nếu gặp xuống dòng (
) và sau đó là space thì remove nó hết rồi thay bằng tab( ).
+với quy định như sau : đếm số space đã remove,nếu 2 space mình thay bằng 1tab,4 space thay bằng 2 tab.v.v.
-Ngoài cách giải quyết trên, không biết các bạn nào có cách giải quyết khác hay hơn không ? Xin cảm ơn các bạn nhiều!
2 space = 1 tab thì dùng sublime text để chuyển thôi :v
Mình cần viết tool hỗ trợ bạn ơi , tool mình viết bằng C# ! Để cho máy tự làm á chứ mình ko nhúng tay vào làm thủ công !
Mình nghĩ là ngoài cách
replace(' ', '\t')
thì không có cách nào hay hơn :vChuỗi json dài vậy mà cứ replace là hại điện hại máy nhé
Sao không dùng StringBuilder, rồi đọc từng phần tử trong chuỗi json, đọc đến đâu, append cho StringBuilder đến đó, giảm độ phức tạp không gian.
Bạn demo thử được không ^^ nói có vẽ trừu tượng quá mình ko rõ lắm !
Ngứa tay thì đọc thẳng code của tool rồi thay ký tự indent xem.
Replace trong trường hợp này vô dụng vì trong string chắc chắn có
space
Ngoài ra thử tìm thư viện hỗ trợ cái khoản thay indent xem sao
Thử cái này xem:
Theo mình thì cách đơn giản nhất (không quan tâm đến tốc độ thực thi) thì parse JSON rồi xuất chuỗi và ghi lại là được (thư viện hỗ trợ parse JSON bằng C# trên mạng cũng nhiều).
Trên Google có hướng dẫn cắt chuỗi/đọc file theo từng dòng1 nên không cần phải dùng
for
và so sánh với'\n'
đâu :vMà mình thắc mắc là cái thụt đầu dòng đó đâu quan trọng với JSON mà phải định dạng chi cho cực vậy bạn?
P/s: mình không rành C#, có sai thì thông cảm. Ahihi.
Mình cũng nghĩ thế. Miễn sao parse được qua Object là ngon rồi
Hi dragon.
http://www.newtonsoft.com/json
Nó là đơn giản và hiệu quả.
P/S Mình không chắc là trong đặc tả file json có yêu cầu buộc viết băng tab hay cách nhưng nếu tool của bạn chỉ đọc được file dùng tab thì hình như có gì đó không đúng.
Thanks bạn nhé , mặc dù cách này cũng chạy từ đầu chuổi tới cuối chuỗi ^^ !