Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

วิธีดู Settings ของ JsonFactory ด้วย Jackson ใน Java

คลาส JsonFactory เป็น thread-safe และรับผิดชอบสร้าง instances ของ writer และ reader รายการ settings ที่สามารถ เปิด/ปิด (turn on/off) อยู่ใน enumeration JsonFactory.Feature ซึ่งมี static method values() คืนค่า enum constants

Syntax

public static enum JsonFactory.Feature extends Enum<JsonFactory.Feature>

ตัวอย่างการใช้งาน

import com.fasterxml.jackson.core.JsonFactory;

public class JsonFactorySettingsTest {
    public static void main(String[] args) {
        JsonFactory jsonFactory = new JsonFactory();
        for (JsonFactory.Feature feature : JsonFactory.Feature.values()) {
            boolean result = jsonFactory.isEnabled(feature);
            System.out.println(feature.name() + ":" + result);
        }
    }
}

ผลลัพธ์ (Output) - Default Settings

INTERN_FIELD_NAMES:true
CANONICALIZE_FIELD_NAMES:true
FAIL_ON_SYMBOL_HASH_OVERFLOW:true
USE_THREAD_LOCAL_FOR_BUFFER_RECYCLING:true

คำอธิบาย Features

Feature Default คำอธิบาย
INTERN_FIELD_NAMES true ใช้ string interning สำหรับ field names ลด memory usage
CANONICALIZE_FIELD_NAMES true canonicalize field names (เก็บเพียงหนึ่ง instance ต่อ unique name)
FAIL_ON_SYMBOL_HASH_OVERFLOW true โยน error ถ้า symbol table hash overflow (ป้องกัน DoS)
USE_THREAD_LOCAL_FOR_BUFFER_RECYCLING true ใช้ thread-local buffer recycling เพื่อ performance

การเปลี่ยนแปลง Settings

JsonFactory factory = new JsonFactory()
    .disable(JsonFactory.Feature.INTERN_FIELD_NAMES)
    .disable(JsonFactory.Feature.CANONICALIZE_FIELD_NAMES)
    .enable(JsonFactory.Feature.USE_THREAD_LOCAL_FOR_BUFFER_RECYCLING);

ความสัมพันธ์กับ JsonParser/JsonGenerator

  • JsonFactory เป็น factory สร้าง JsonParser และ JsonGenerator
  • Settings ของ Factory จะสืบทอดไปยัง Parser/Generator ที่สร้างจากมัน
  • Parser/Generator มี features ของตัวเองเพิ่มเติม (JsonParser.Feature, JsonGenerator.Feature)

สรุป

JsonFactory.Feature ให้การควบคุม low-level settings ของ JSON processing factory ทั้ง symbol table management, memory optimization, และ thread safety เป็น settings ระดับ infrastructure ที่ส่งผลต่อ performance และ behavior ทั้ง parser และ generator