JSON (JavaScript Object Notation) — ay isang magaan na text format para sa pagpapalitan ng data, batay sa syntax ng mga object ng JavaScript. Ito ay ginagamit kahit saan: mula sa REST API at mga configuration file hanggang sa pag-imbak ng data sa mga database at mobile application. Ayon sa opisyal na website ng JSON, ang format ay hindi nakadepende sa programming language at sinusuportahan ng halos lahat ng modernong platform. JSON ay naging de facto standard para sa paghahatid ng data sa pagitan ng client at server.
Mga pangunahing punto
JSON — ay isang text format para sa representasyon ng nakaayos na data, batay sa syntax ng JavaScript. Sa kabila ng pinagmulan nito mula sa JavaScript, ang format ay ganap na malaya sa wika — umiiral ang mga parser at serializer para sa lahat ng sikat na programming language.
Ang kasaysayan ng JSON ay nagsimula noong unang bahagi ng 2000s, nang ihiwalay ni Douglas Crockford ang isang subset ng JavaScript syntax para sa pagpapalitan ng data. Noong 2013, na-standardize ang format bilang ECMA-404, at kalaunan bilang ISO/IEC 21778:2017. Ang pangalan ay nangangahulugang JavaScript Object Notation.
Ang pangunahing bentahe ng JSON ay ang minimalistang syntax. Para sa paglalarawan ng data, anim na uri lamang ang ginagamit: string, numero, boolean, null, array at object. Ito ay sapat para sa representasyon ng anumang mga structure ng data na ginagamit sa mga application.
Ang syntax ng JSON ay napakasimple: ang data ay kinakatawan bilang mga pares ng key-value, kung saan ang key ay isang string sa dobleng panipi, at ang value ay isa sa anim na pangunahing uri. Ang mga object ay nakapaloob sa curly braces, ang mga array ay nasa square brackets. Ang mga string ay obligadong gumamit ng dobleng panipi, ang mga solong panipi ay hindi pinapayagan.
Ang mga numero sa JSON ay maaaring integer o floating-point, positibo o negatibo, may exponential notation. Ang mga boolean value ay kinakatawan ng true at false, at ang kawalan ng value ay null. Ang mga array ay naglalaman ng nakaayos na set ng mga value ng anumang uri, kabilang ang mga nested array at object.
{
"name": "JSON",
"type": "text",
"version": 2024,
"flexible": true,
"extensions": null,
"languages": [
"JavaScript",
"Python",
"Java"
],
"nested": {
"info": "suporta para sa nesting"
}
}
| Uri | Halimbawa | Paglalarawan |
|---|---|---|
| String | “teksto” |
Sa dobleng panipi, may mga escape sequence |
| Numero | 42 |
Integer, floating-point, exponential |
| Boolean | true |
true o false — walang panipi |
| null | null |
Kawalan ng value |
| Object | {} |
Hindi nakaayos na set ng mga pares key-value |
| Array | [] |
Nakaayos na listahan ng mga value |
JSON ay ang pangunahing format ng palitan ng data para sa REST API sa mobile at web development. Ang server ay nagpapadala ng JSON sa body ng tugon, ang client — sa body ng kahilingan. Ang standard na header ng Content-Type para sa JSON ay application/json.
Ang mga modernong REST API ay gumagamit ng JSON para sa pagpapadala ng lahat ng uri ng data: mula sa mga simpleng listahan hanggang sa kumplikadong nested structure na may mga relasyon sa pagitan ng entity. Ang client library (hal. Axios sa JavaScript o Retrofit sa Android) ay awtomatikong nagse-serialize at nagde-deserialize ng JSON, na nagliligtas sa developer mula sa manual na pag-parse.
Ang isang mahalagang bentahe ng JSON sa REST API ay ang kakayahang magpadala ng bahagyang data (partial response) sa pamamagitan ng mga parameter ng kahilingan, pati na rin ang suporta para sa mga nested na resource nang walang karagdagang kahilingan sa server.
Pag-parse ng JSON sa mga mobile platform ay isinasagawa gamit ang mga built-in na tool. Ang Android ay gumagamit ng mga library na Gson mula sa Google o Moshi mula sa Square, ang iOS ay gumagamit ng Codable protocol na may JSONDecoder. Ang bawat platform ay nagbibigay ng mga maginhawang tool para sa conversion ng JSON sa native na object at vice versa.
Sa Android, ang approach na may Gson o Moshi ay popular. Sapat na mag-define ng data class na may @SerializedName annotations at tawagan ang fromJson para sa deserialization. Awtomatikong itinutugma ng library ang mga pangalan ng field sa JSON sa mga field ng class.
import com.google.gson.Gson
import com.google.gson.annotations.SerializedName
data class User(
@SerializedName("id") val id: Int,
@SerializedName("name") val name: String,
@SerializedName("email") val email: String
)
fun parseJson(jsonString: String): User {
val gson = Gson()
return gson.fromJson(jsonString, User::class.java)
}
Sa iOS, ginagamit ang built-in na Codable protocol na may JSONDecoder. Ang structure ng data ay idineklara bilang struct na may Codable protocol, pagkatapos ang JSON ay na-parse sa isang linya. Ginagawa ng JSONEncoder ang reverse serialization — kino-convert ang object sa JSON para ipadala sa server.
import Foundation
struct User: Codable {
let id: Int
let name: String
let email: String
}
func parseJSON(from data: Data) throws -> User {
let decoder = JSONDecoder()
return try decoder.decode(User.self, from: data)
}
JSON at XML — dalawang pangunahing format para sa pagpapadala ng nakaayos na data. Ang JSON ay nananalo sa pagiging simple at performance, ang XML sa kahigpitan at pagpapatunay. Ang pagpili sa pagitan ng mga ito ay depende sa mga kinakailangan ng proyekto: para sa REST API mas madalas pinipili ang JSON, para sa kumplikadong dokumento na may schema — XML.
Ang XML ay nangangailangan ng pagsasara ng tag para sa bawat elemento, na nagpapalaki sa laki ng data ng 2-3 beses kumpara sa JSON. Kasabay nito, sinusuportahan ng XML ang mga namespace, XSD schema, attribute, at XSLT transformation, na ginagawang mas malakas ito para sa mga gawain ng daloy ng dokumento at pagsasama ng corporate system.
| Katangian | JSON | XML |
|---|---|---|
| Syntax | Minimalista, key-value | Batay sa tag, pambukas at pangsarang tag |
| Laki ng data | Compact | 2-3 beses na mas malaki kaysa JSON |
| Uri ng data | Anim na pangunahing uri | Teksto lamang, uri sa pamamagitan ng schema |
| Pagpapatunay | Walang built-in, sa pamamagitan ng JSON Schema | XSD — mahigpit at mature |
| Namespace | Wala | Buong suporta para sa namespace |
| Bilis ng pag-parse | Mataas | Mababa dahil sa pagiging kumplikado |
Mga halimbawa ay nagpapakita ng mga tipikal na operasyon sa JSON sa mobile development: pag-parse ng mga tugon ng API, paglikha ng JSON para sa pagpapadala, at pagproseso ng mga nested structure. Ang pag-unawa sa mga pattern na ito ay kinakailangan para sa bawat developer ng mobile application.
Sa JavaScript, ang JSON.stringify ay nagko-convert ng object sa JSON string. Ang pangalawang argument ay maaaring isang array ng mga key para sa selective serialization o isang replacement function. Ang ikatlong argument ay nagtatakda ng indentation para sa pag-format.
interface Order {
id: string;
items: OrderItem[];
total: number;
createdAt: string;
}
const order: Order = {
id: 'ord_001',
items: [{ product: 'phone', quantity: 2 }],
total: 1599.98,
createdAt: '2026-07-03T10:00:00Z'
};
const jsonString = JSON.stringify(order, null, 2);
Sa Kotlin na may Moshi library, ang mga nested JSON object ay pinoproseso sa pamamagitan ng nested data classes. Ang @Json annotation ay nagpapahiwatig ng pangalan ng field sa JSON kung ito ay naiiba sa pangalan ng property ng class. Ang mga array ay kinakatawan bilang List na may uri ng elemento.
import com.squareup.moshi.Moshi
import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory
data class ApiResponse(
val status: String,
val data: List<Product>,
val pagination: Pagination
)
data class Product(
val id: Int,
val title: String,
val price: Double
)
data class Pagination(
val page: Int,
val total: Int
)
val moshi = Moshi.Builder()
.add(KotlinJsonAdapterFactory())
.build()
JSON Schema — ay isang wika para sa paglalarawan ng istraktura ng isang JSON document, kahalintulad ng XSD para sa XML. Gamit ang JSON Schema, maaaring itakda ang mga mandatoryong field, uri ng data, saklaw ng halaga, pattern ng string, at nested na istraktura. Ang pagpapatunay ayon sa schema ay nakakatuklas ng mga error sa data bago ang pagproseso sa application.
Ang JSON Schema ay malawakang ginagamit sa OpenAPI (Swagger) para sa pagdodokumento ng REST API, sa mga form ng pagpapatunay ng input, at sa pagsubok. Ang file ng schema ay mismong isang JSON document, na nagpapahintulot sa paggamit ng standard na JSON parser para sa pagbasa nito. Mayroong mga online validator at library para sa lahat ng sikat na programming language.
Sa mobile development, ang JSON Schema ay ginagamit para sa pagpapatunay ng mga tugon ng server sa yugto ng pagsubok at para sa pagsusuri ng mga configuration file. Ang mga library tulad ng network-validator sa Android at json-schema-validator ay nagpapahintulot sa pag-embed ng pagpapatunay nang direkta sa proseso ng development, na pumipigil sa mga error sa maagang yugto.
Mga madalas itanong
JSON ay sumusuporta sa anim na uri: string (sa dobleng panipi), numero (integer at floating-point), boolean (true/false), null, object (mga pares key-value sa {}) at array (listahan ng mga value sa []). Ito ay sapat para sa anumang istraktura ng data sa mga application.
Hindi, ang standard ng JSON ay hindi sumusuporta sa mga komento. Kung kailangan mo ng mga komento, gamitin ang JSON5 (extended JSON) o magdagdag ng field na may paglalarawan, halimbawa “_comment”: “paliwanag”. Ang ilang tool, tulad ng VS Code, ay sumusuporta sa mga komento sa configuration JSON file, ngunit ito ay isang hindi-standard na extension.
JSONB — ay isang binary storage format para sa JSON sa PostgreSQL. Hindi tulad ng text JSON, ang JSONB ay mas mabilis na pinoproseso, sumusuporta sa pag-index (GIN indexes) at ginagarantiyahan ang pagiging natatangi ng mga key. Kasabay nito, ang JSONB ay kumukuha ng mas maraming espasyo sa disk dahil sa idinagdag na metadata.
Gamitin ang JSONLint (jsonlint.com) para sa mabilis na pagsusuri, built-in na JSON.parse() sa JavaScript na may try-catch, o IDE plugins. Ang pagpapatunay ay kinabibilangan ng pagsusuri sa kawastuhan ng mga panipi, pagsasara ng mga bracket, at pagsunod sa mga uri. Para sa kumplikadong schema, gamitin ang JSON Schema Validator.
Walang limitasyon sa JSON specification. Sa praktika, ang laki ay limitado ng memorya ng device at kakayahan ng parser. Para sa mga mobile application, inirerekomenda na huwag lumampas ng 1-2 MB bawat tugon, at para sa malaking data ay gumamit ng pagination o streaming transmission.
Buod
Gagawa kami ng mobile application na turnkey
Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.
Basahin din