Teknikdagboken En blogg om teknik i vardagen

8Mar/110

Bra tillägg till Google Chrome

Min favoritläsare är Mozilla Firefox tack vare alla bra tillägg, att de följer standarder bra och att de länge drivit utvecklingen för webbläsare framåt. Som utvecklare av webbapplikationer är det dessutom bra att använda samma webbläsare som användarna gör 🙂

Men på sistone har andra webbläsare dykt upp som också gör ett mycket bra jobb. En av dessa är Google Chrome och idag tittade jag lite snabbt på dess tillägg. Förra gången jag gjorde detta kunde man inte installera dessa på ett smidigt sätt (länge sedan) men nu är den mer mogen.

De första riktigt schysta tilläggen jag hittade var:

  • Adblock Plus - Plockar bort nästan all reklam från ex. Aftonbladet vilket resulterar i att sidan både blir mer lättläst och laddas snabbare
  • Facebook Photo Zoom - Visar den större bilden av foton när man håller musen över en miniatyr på ett riktigt snyggt sätt
  • KB SSL Enforcer - Ser till att t.ex. Facebook alltid använder en krypterad anslutning när det går. Annars kan en hacker som sitter på samma trådlösa nätverk som dig på ett enkelt sätt kapa din session och låtsas vara du.

Det finns mycket annat intressant men detta var vad jag installerade vid första besöket.

4Mar/110

Serialisera objekt till json med camelCase

För att serialisera ett objekt till json i MVC3 kan man använda Json(), men då skapas objektet som serialiseras med fel namn i JavaScript där camelCase används. För att fixa detta kan man använda DataContractJsonSerializer. Här är min lösning:

public class JsonHelper
{
    public static string Serialize<T>(T obj)
    {
        var serializer = new DataContractJsonSerializer(obj.GetType());
        var ms = new MemoryStream();
        serializer.WriteObject(ms, obj);
        string retVal = Encoding.UTF8.GetString(ms.ToArray());
        ms.Dispose();
        return retVal;
    }

    public static T Deserialize<T>(string json)
    {
        T obj = Activator.CreateInstance<T>();
        var ms = new MemoryStream(Encoding.Unicode.GetBytes(json));
        var serializer = new DataContractJsonSerializer(obj.GetType());
        obj = (T)serializer.ReadObject(ms);
        ms.Close();
        ms.Dispose();
        return obj;
    }
}

Objektet som skall serialiseras behöver några extra taggar på sig ex:

[DataContract]
public class Person
{
    [DataMember(Name="firstName")]
    public string FirstName { get; set; }

    [DataMember(Name="lastName")]
    public string LastName { get; set; }
}

För att serialisera/deserialisera skriver man så här:

var myPerson = new Person()
{
    FirstName = "John",
    LastName = "Doe"
};

// Serialize
string json = JSONHelper.Serialize<Person>(myPerson);

// Deserialize
myPerson = JSONHelper.Deserialize<Person>(json);

Koden är i princip identisk med http://pietschsoft.com/post/2008/02/NET-35-JSON-Serialization-using-the-DataContractJsonSerializer.aspx. Jag har bara ändrat från default encoding till utf8.