オブジェクト回転stringとjsonStringの違い

3998 ワード

Java開発では、1つのオブジェクトをstringに変換する問題によく遭遇します.一般的に使われるいくつかの方法はtoString、強制変換(String)、Stringです.valueOfという3つの方法ですが、具体的にはどのような違いがあるか知っていますか?これは本文の讨论の重点ではありませんため、1篇のブログを探して、书くのはとても简単で分かりやすくて、よく分からないみんなは见てみることができます
リンク:https://blog.csdn.net/sunzhenhua0608/article/details/8014060

くだらないことをたくさん言いましたが、今からこのブログのテーマ「オブジェクト回転stringとjsonStringの違い」について議論します。


まず違いを言います.
実装の面では、jsonStringはストリームの四角い文字でテキスト文字列を印刷し、Stringタイプで操作するとcharタイプに分割してループに\を追加して翻訳文字の翻訳を防止し、異なるタイプは異なる前処理を行い、javaのtoStirngは一般的につなぎ合わせた文字列であり、特別な前処理はない
外管では、jsonStringはテキスト通りに印刷され、オブジェクトのみがインスタンス化され、オブジェクト自体にデフォルト値がない場合に{}を返します.stringはオブジェクトをつなぎ合わせる操作でjava仕様に従って移行するなどコンパイルされます
jsonStringコード分析:使用するjarパッケージaliba.fastjson
ソースパケットを呼び出すプロセス
//json string ,JSON.toJSONString(object)
public static String toJSONString(Object object) {
        return toJSONString(object);
}
// 
public static String toJSONString(Object object, SerializerFeature... features) {
        // Writer
        SerializeWriter out = new SerializeWriter();

        try {
            //
            JSONSerializer serializer = new JSONSerializer(out);
            SerializerFeature[] var4 = features;
            int var5 = features.length;

            for(int var6 = 0; var6 < var5; ++var6) {
                SerializerFeature feature = var4[var6];
                serializer.config(feature, true);
            }

            serializer.write(object);
            String var11 = out.toString();
            return var11;
        } finally {
            out.close();
        }
    }


public final void write(Object object) {
        if (object == null) {
            this.out.writeNull();
        } else {
            Class> clazz = object.getClass();
            // object , 
            ObjectSerializer writer = this.getObjectWriter(clazz);

            try {
                //writer 
                writer.write(this, object, (Object)null, (Type)null, 0);
            } catch (IOException var5) {
                throw new JSONException(var5.getMessage(), var5);
            }
}

public final void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {
        SerializeWriter out = serializer.getWriter();
        if (object == null) {
            if (out.isEnabled(SerializerFeature.WriteNullListAsEmpty)) {
                out.write("[]");
            } else {
                out.writeNull();
            }

        } else {
            Object[] array = (Object[])((Object[])object);
            int size = array.length;
            SerialContext context = serializer.getContext();
            serializer.setContext(context, object, fieldName, 0);

            try {
                out.append('[');

                for(int i = 0; i < size; ++i) {
                    if (i != 0) {
                        out.append(',');
                    }

                    Object item = array[i];
                    if (item == null) {
                        out.append("null");
                    } else if (item.getClass() == this.componentType) {
                        this.compObjectSerializer.write(serializer, item, i, (Type)null, 0);
                    } else {
                        ObjectSerializer itemSerializer = serializer.getObjectWriter(item.getClass());
                        itemSerializer.write(serializer, item, i, (Type)null, 0);
                    }
                }

                out.append(']');
            } finally {
                serializer.setContext(context);
            }

        }
    }