ν°μ€ν 리 λ·°
[Java] μλ°μ Map 컬λ μ ν΄λμ€ with JSON λ°μ΄ν° λ€λ£¨κΈ°
doeunnkimm 2023. 2. 16. 12:45
π Map 컬λ μ ν΄λμ€
Map μΈν°νμ΄μ€λ Collection μΈν°νμ΄μ€μλ λ€λ₯Έ μ μ₯ λ°©μμ κ°μ§λλ€.
Map μΈν°νμ΄μ€λ₯Ό ꡬνν Map 컬λ μ ν΄λμ€λ€μ ν€μ κ°μ νλμ μμΌλ‘ μ μ₯νλ λ°©μ(key-value λ°©μ)μ μ¬μ©ν©λλ€.
μ¬κΈ°μ ν€(key)λ μ€μ§μ μΈ κ°(value)μ μ°ΎκΈ° μν μ΄λ¦μ μν μ ν©λλ€.
Map μΈν°νμ΄μ€λ₯Ό ꡬνν λͺ¨λ Map 컬λ μ ν΄λμ€λ λ€μκ³Ό κ°μ νΉμ§μ κ°μ§λλ€.
1. μμμ μ μ₯ μμλ₯Ό μ μ§νμ§ μλλ€.
2. ν€λ μ€λ³΅μ νμ©νμ§ μμ§λ§, κ°μ μ€λ³΅μ νμ©νλ€.
λνμ μΈ Map 컬λ μ ν΄λμ€μ μνλ ν΄λμ€λ λ€μκ³Ό κ°μ΅λλ€.
1. HashMap<K, V>
2. Hashtable<K, V>
3. TreeMap<K, V>
β HashMap<K, V> ν΄λμ€
HashMap ν΄λμ€λ Map 컬λ μ ν΄λμ€μμ κ°μ₯ λ§μ΄ μ¬μ©λλ ν΄λμ€ μ€ νλμ λλ€.
JDK1.2λΆν° μ 곡λ HashMpa ν΄λμ€λ ν΄μ μκ³ λ¦¬μ¦(hash algorithm)μ μ¬μ©νμ¬ κ²μ μλκ° λ§€μ° λΉ λ¦ λλ€.
HashMap ν΄λμ€λ Map μΈν°νμ΄μ€λ₯Ό ꡬννλ―λ‘, μ€λ³΅λ ν€λ‘λ κ°μ μ μ₯ν μ μμ΅λλ€.
νμ§λ§ κ°μ κ°μ λ€λ₯Έ ν€λ‘ μ μ₯νλ κ²μ κ°λ₯ν©λλ€.
λ€μμ hashMapμ μ μΈνλ λ°©λ²μ λλ€.
HashMap<K, V> name = new HashMap<K, V>();
λ€μ μμ λ userMapμ΄λΌλ hashMapμ μμ΄λ, λΉλ°λ²νΈ, μ΄λ¦, λμ΄λ₯Ό keyλ‘ ν΄μ valueκΉμ§ μ½μ νλ μ½λμ λλ€.
HashMap<String, Object> userMap = new HashMap<String, Object>();
userMap.put("id", "doeunnkimm");
userMap.put("password" , "1234");
userMap.put("name", "κΉλμ");
userMap.put("age", 20);
// ν€κ°μΌλ‘ value κ°μ Έμ€κΈ°
System.out.println(userMap.get("id")); // doeunnkimm
π JSONObject λΌμ΄λΈλ¬λ¦¬
μλ°μμ org.json λΌμ΄λΈλ¬λ¦¬λ₯Ό μ΄μ©νμ¬ JSON λ°μ΄ν°λ₯Ό λ€λ£° μ μμ΅λλ€.
μ΄ λΌμ΄λΈλ¬λ¦¬μμ μ 곡νλ JSONObject, JSONArray ν΄λμ€λ JSON λ°μ΄ν°λ₯Ό κ°κ³ μκ³ , JSON νμμ λ¬Έμμ΄λ‘ μΆλ ₯ν μ μμ΅λλ€.
λν JSON λ¬Έμμ΄μ νμΌλ‘ μ μ₯ν μλ μμ΅λλ€.
κ°μκΈ° JSONObjectλ₯Ό μ Map 컬λ μ ν΄λμ€ κΈμμ λ€λ£¨λλ©΄
JSON λ°μ΄ν°μ ννκ° keyμ value ννλ‘ μ΄λ£¨μ΄μ Έ μκΈ° λλ¬Έμ λλ€.
1. JSON ?
JSONμ JavaScript Object Notationμ μ½μλ‘, Javascriptμμ λ°μ΄ν°λ₯Ό μ λ¬νκΈ° μν΄ λ§λ€μ΄μ‘μ΅λλ€.
JSON νμΌμ λ€μκ³Ό κ°μ΄ key-value ννλ‘ λ°μ΄ν°λ₯Ό κ°κ³ μμ΅λλ€.
{
"pageInfo": {
"pageName": "abc",
"pagePic": "http://example.com/content.jpg"
},
"posts": [
{
"post_id": "123456789012_123456789012",
"message": "Sounds cool. Can't wait to see it!",
"likesCount": "2",
}
]
}
2. JSONObject
JSONObjectλ JSONμμ key-value μμΌλ‘ λ°μ΄ν°λ₯Ό νννλ κ°μ²΄μ λλ€.
JSONObjectμ λ°μ΄ν°λ₯Ό μ λ ₯ν λλ put(key, value)μΌλ‘ μ λ ₯ν©λλ€.
toString()μ JSONObjectκ° κ°κ³ μλ λ°μ΄ν°λ₯Ό JSON νμμΌλ‘ μΆλ ₯ν©λλ€.
JSONObject jo = new JSONObject();
jo.put("name", "Johe");
jo.put("city", "Seoul");
3. HashMapμΌλ‘ JSONObject μμ±
κ·Έλ°λ° JSONObject κ°μ²΄μ 맀κ°λ³μλ‘ HashMap κ°μ²΄λ λκ²¨μ€ μ μμ΅λλ€.
κ·Έλ¬λ©΄ HashMap κ°μ²΄μμ put ν΄μ£Όμλ keyμ valueκ° κ·Έλλ‘ JSONObject νμ μΌλ‘ λ³νλκ² λ©λλ€.
HashMap<String, Object> userMap = new HashMap<String, Object>();
userMap.put("id", "doeunnkimm");
userMap.put("password", "1234");
userMap.put("name", "κΉλμ");
userMap.put("age", 20);
JSONObject userJSON = null;
userJSON = new JSONObject(userMap);
System.out.println(userJSON);
4. JSONObjectμ key-value μΆκ°(put)
keyμ valueμ νμ μ΄ μ²μμ μ λ€λ¦μΌλ‘ μ€μ νλ κ²κ³Ό λ€λ₯Ό μ μκΈ° λλ¬Έμ κΌ try-catch μμ λ£μ΄μ£Όμ΄μΌ ν©λλ€.
try {
userJSON.put("gender", "F");
} catch (JSONException e) {
e.printStackTrace();
]
5. JSONObjectμμ keyλ‘ value μ‘°ν(get)
μ΄ κ²½μ°μλ μ λ ₯ν keyκ° JSONObjectμ μμ μ μκΈ° λλ¬Έμ try-catch μμ μμ±ν΄μΌ ν©λλ€.
try {
System.out.println(userJSON.get("id"));
} catch (JSONException e) {
e.printStackTrace();
}
6. JSONArray
JSONμ key-value ννλ‘ λ°μ΄ν°λ₯Ό κ°κ³ μλλ°, μ¬κΈ°μ valueλ μλμ κ°μ΄ Array νμ μ΄ λ μ μμ΅λλ€.
"friends":["Harry","Sam"]
μλ₯Ό λ€μ΄ μνμ΄λΌλ keyκ° μλ€λ©΄ valueλ‘ λ€μ΄κ°λ μνμ΄ μ¬λ¬ κ°κ° μμ κ²μ λλ€.
λν κ·Έ μνμλ μ΄λ¦, κ°κ²©, ν μΈμ¨ λ±μ keyκ° λ€μ λ μ‘΄μ¬ν κ²μ λλ€.
λ°λΌμ νλμ keyμ λν΄ μ¬λ¬ λ°μ΄ν°λ₯Ό λ΄μμΌ ν λ JSONArrayλ₯Ό μ¬μ©ν©λλ€.
7. νλμ keyμ λν΄ μ¬λ¬ κ°μ λ°μ΄ν° λ΄κΈ°
μλ μ½λλ μ¬λ¬ κ°μ μνμ΄ κ°μ²΄λ‘ μ‘΄μ¬νλ€κ³ νμ λ
μ΄ κ°μ²΄λ€μ JSONArrayμ productλΌλ ν€μ κ°μΌλ‘ λ΄μΌλ €κ³ ν©λλ€.
μ°μ μνμ μ 보λ₯Ό λ΄μ Product ν΄λμ€ νλλ₯Ό μ μΈν΄μ£Όκ² μ΅λλ€.
public class Product {
private static Long sequence;
private String productName;
private int productPrice;
private int productStock;
public Product() {;}
public Product(String productName, int productPrice, int productStock) {
this.productId = sequence;
this.productName = productName;
this.productPrice = productPrice;
this.productStock = productStock;
}
]
μ΄μ ArrayListμ μν μ 보λ€μ λ΄μμ£Όκ³ μ΄ λ΄κΈ΄ ArrayListλ₯Ό νλ²μ νλμ keyμ λ€ λ΄μλ²λ¦¬λ €κ³ ν©λλ€.
ArrayList<Product> productList = new ArrayList<Product>(
Arrays.asList(new Product("μ‘±λ°", 39000, 10), new Product("보μ", 45000, 10)));
// productListμ λ΄κΈ΄ κ°μ²΄ νλνλλ₯Ό JSONObjectλ‘ λ°κΏμ λ€μ λ΄μ ArrayList
ArrayList<JSONObject> productJSONs = new ArrayList<JSONObject>();
productList.strea().map(product -> new JSONObject(product)).forEach(productJSONs::add);
JSONArray products = new JSONArray(productJSONs);
System.out.println(products.toString());
// [{"productId":1,"productStock":10,"productPrice":39000,"productName":"μ‘±λ°"},{"productId":2,"productStock":10,"productPrice":45000,"productName":"보μ"}]
8. JSONArrayμμ μνλ μ 보 μΆλ ₯
μ¬μ€ JSONArrayλ ν€μ valueμμ λ λ€μ ν€κ° μκ³ valueκ° μλ ννμ¬μ getμ μ μκ°νλ©΄μ ν΄μΌν©λλ€.
μ λ μμμ λ§λ€μ΄ λμ productsμμ λͺ¨λ μνμ μ΄λ¦λ§ λͺ¨λ μΆλ ₯νλ μ½λλ₯Ό μμ±ν΄ λ³΄λ €κ³ ν©λλ€.
for (int i=0; i < products.length(); i++) {
try {
System.out.println(products.getJSONObject(i).get("productName"));
} catch (JSONException e) {
e.printStackTrace();
}
}
'λ°±μλ > Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java] μλ°μ Set 컬λ μ ν΄λμ€ (0) | 2023.02.16 |
---|---|
[Java] μλ°μ Stream (0) | 2023.02.15 |
[Java] μλ°μ List 컬λ μ ν΄λμ€ (0) | 2023.02.14 |
[Java] 컬λ μ νλ μμν¬(Collection Framework) - λ€μμ λ°μ΄ν°λ₯Ό μ½κ³ ν¨κ³Όμ μΌλ‘ μ²λ¦¬νμ (0) | 2023.02.13 |
[Java] μλ°μ Wrapper ν΄λμ€μ λν΄ μμ보μ (0) | 2023.02.09 |
- Total
- Today
- Yesterday
- λ°μ΄ν°λΆμ
- HTML
- 리μ‘νΈ ν
- jest
- λ₯λ¬λ
- μλ°
- νλ‘ νΈμλ κΈ°μ΄
- Python
- react-query
- νμ μ€ν¬λ¦½νΈ
- μλ°μ€ν¬λ¦½νΈ
- JSP
- λνλ§
- λ¨Έμ λ¬λ
- μλ°μ€ν¬λ¦½νΈ κΈ°μ΄
- μ€νμΌ μ»΄ν¬λνΈ styled-components
- next.js
- νλ‘μ νΈ νκ³
- frontend
- νλ‘ νΈμλ 곡λΆ
- TypeScript
- μΈνλ°
- react
- νμ΄μ¬
- rtl
- testing
- 리μ‘νΈ
- styled-components
- CSS
- νλ‘ νΈμλ
μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |