2016-01-27 8 views
5

के साथ प्रारूपित किसी को भी एक तरह से पता है मोशी प्राप्त करने के लिए (एक config.json के संदर्भ में मानव उपभोग के लिए) तो से खरोज के साथ एक बहु लाइन json उत्पादन करने के लिए :json मोशी

{"max_additional_random_time_between_checks":180,"min_time_between_checks":60} 

कुछ करने के लिए इस तरह:

{ 
    "max_additional_random_time_between_checks":180, 
    "min_time_between_checks":60 
} 

मैं जानता हूँ कि अन्य json-लेखक कार्यान्वयन ऐसा कर सकते हैं - लेकिन मैं यहाँ स्थिरता

उत्तर

3

के लिए मोशी के लिए आप सेवा के साथ सौदा कर सकते हैं छड़ी चाहते हैं

import com.squareup.moshi.JsonWriter; 
import com.squareup.moshi.Moshi; 

import java.io.IOException; 

import okio.Buffer; 

public class MoshiPrettyPrintingTest { 

    private static class Dude { 
     public final String firstName = "Jeff"; 
     public final String lastName = "Lebowski"; 
    } 

    public static void main(String[] args) throws IOException { 

     final Moshi moshi = new Moshi.Builder().build(); 

     final Buffer buffer = new Buffer(); 
     final JsonWriter jsonWriter = JsonWriter.of(buffer); 

     // This is the important part: 
     // - by default this is `null`, resulting in no pretty printing 
     // - setting it to some value, will indent each level with this String 
     // NOTE: You should probably only use whitespace here... 
     jsonWriter.setIndent(" "); 

     moshi.adapter(Dude.class).toJson(jsonWriter, new Dude()); 

     final String json = buffer.readUtf8(); 

     System.out.println(json); 
    } 
} 

यह प्रिंट:

{ 
    "firstName": "Jeff", 
    "lastName": "Lebowski" 
} 

prettyPrintObject() देखें this test file और source code of BufferedSinkJsonWriter में वस्तु ializing खुद के, इस चाल करना चाहिए।

हालांकि, मैंने अभी तक यह नहीं पता लगाया है कि अगर आप रेट्रोफिट के साथ मोशी का उपयोग कर रहे हैं तो यह कैसे करना संभव है।

+0

धन्यवाद! वास्तव में मैंने जो खोजा और सोचा कि यह मोशी के साथ सक्षम नहीं है क्योंकि यह इस lib के दायरे में नहीं है - खुशी से हैरान है कि इस तरह से है! – ligi

4

अब आप स्वरूपण के लिए एडाप्टर पर .indent(" ") विधि का उपयोग कर सकते हैं।

final Moshi moshi = new Moshi.Builder().build(); 
String json = moshi.adapter(Dude.class).indent(" ").toJson(new Dude()) 
+0

अच्छा - अनुवर्ती के लिए धन्यवाद – ligi