2009-06-29 17 views

risposta

10

Hai provato JSON.net?

+0

vorrebbe creare una sorta di metodo di supporto come è possibile in .NET 3.5, ovviamente non ho la libreria che Scott menziona qui, ma mi piacerebbe creare il mio. Immagino che sarebbe più facile a dirsi che a farsi: http://weblogs.asp.net/scottgu/archive/2007/10/01/tip-trick-building-a-tojson-extension-method-using-net- 3-5.aspx – PositiveGuy

+0

Cosa intendi? È davvero facile ... – jfar

+2

al lavoro siamo bloccati con .net 2.0 e io uso json.net, funziona bene. –

1

JSON.org ha riferimenti a un numero di serializzatori in un certo numero di lingue, tra cui più di mezza dozzina di C#. Dovresti riuscire a trovarne uno che soddisfi le tue API e le esigenze di licenza, tra cui lo JSONsharp con la licenza LGPL e il ben progettato Json.NET.

Se quello che stai serializzando è abbastanza semplice, non è poi così difficile scriverlo per uno scopo specifico. Il sito JSON.org ha la sintassi ed è molto diretto.

+0

non può utilizzare Json.NET, richiede .NET 3.5 SP1. – PositiveGuy

+0

JSONsharp dovrebbe essere quello che vuoi. È LGPL, include source, ha l'obione di prendere un oggetto e serializzarlo e richiede solo .Net 2.0. – lavinio

11

È possibile utilizzare la classe JavaScriptSerializer da ASP.NET Ajax 1.0, che è compatibile con .NET 2.0.

+0

preferirei non installare tale framework poiché non sto utilizzando i controlli AJAX di ASP.NET. Usiamo jQuery – PositiveGuy

+0

È una classe lato server. Non è necessario utilizzare il codice lato client per utilizzare quella classe. –

+0

sì, lo so. Potresti aver venduto qui poiché non abbiamo .NET 3.5 – PositiveGuy

1

Stai cercando di creare un server RPC sul lato .NET? Se è così, guarda Jayrock (jayrock.berlios.de). Ottieni il codice sorgente e verrà compilato sotto 2.0.

impostare anche un server RPC è un gioco da ragazzi:

using Jayrock; 
using Jayrock.JsonRpc; 
using Jayrock.JsonRpc.Web; 
using Jayrock.Json; 
using Jayrock.Json.Conversion; 


namespace myRPCService 
{ 
    [JsonRpcService("Service")] 
    public class Service : JsonRpcHandler 
    { 

     [JsonRpcMethod("call", Idempotent = true)] 
     public string call(string value) 
     { 
      JsonObject oJSON = JsonConvert.Import(typeof(JsonObject), value) as JsonObject; 
      ... 
      return oJSON.ToString(); 
     } 
    } 
} 
+0

solo cercando di restituire JSON tramite una chiamata al nostro.ashx page – PositiveGuy

-1

che uso qui di seguito il codice per il messaggio JSON e funziona bene per me.

public static class JSONHelper 
{ 
    public static string ToJSON(this object obj) 
    { 
     JavaScriptSerializer serializer = new JavaScriptSerializer(); 
     return serializer.Serialize(obj); 
    } 
} 

Chiamare serializzatore JSON in WCF.

[OperationContract] 
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json)] 
public string LoadDetails() 
{ 
    LogDetails objSubLog = new LogDetails(); 
    List<LogDetails> lstLogdetails; 
    DAL objDAL = new DAL(); 
    lstLogdetails = objDAL.GetLog("ALL", objSubLog); 
    return lstLogdetails.ToJSON(); 
} 
+0

Questo è stato molto utile perché non ho potuto utilizzare una versione recente di Json.NET a causa di una dipendenza esistente con una versione legacy di Sitecore. –

+0

'JavaScriptSerializer' non è disponibile per .NET 2.0 https://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer(v=vs.90).aspx – TarasB

+0

JavaScriptSerializer non è disponibile in .net 2.0 – Bogdan

1

Sono stato in grado di eseguire il backport dell'implementazione di Mono di System.Json in C# 2.0 con alcune modifiche minori.

Avrete bisogno di 5 file da here e JavaScriptReader.cs da here.

Si noti che con System.Json è necessario serializzare manualmente qualsiasi tipo di dati non primitivi. (vedi here)